Files
NebulaLauncher/Nebula.Launcher/ViewModels/ViewModelBase.cs

38 lines
980 B
C#
Raw Normal View History

2024-12-21 15:15:04 +03:00
using System;
using System.Diagnostics.CodeAnalysis;
using Avalonia.Controls;
2024-12-21 13:11:30 +03:00
using CommunityToolkit.Mvvm.ComponentModel;
2024-12-18 12:37:00 +03:00
namespace Nebula.Launcher.ViewModels;
2024-12-21 13:11:30 +03:00
public abstract class ViewModelBase : ObservableObject
2024-12-18 12:37:00 +03:00
{
2024-12-21 15:15:04 +03:00
private readonly IServiceProvider _serviceProvider;
public ViewModelBase()
{
AssertDesignMode();
_serviceProvider = default!;
}
public ViewModelBase(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public bool TryGetViewModel(Type type,[NotNullWhen(true)] out ViewModelBase? viewModelBase)
{
viewModelBase = null;
var vm = Design.IsDesignMode
? Activator.CreateInstance(type)
: _serviceProvider.GetService(type);
if (vm is not ViewModelBase vmb) return false;
viewModelBase = vmb;
return true;
}
public void AssertDesignMode()
{
if (!Design.IsDesignMode) throw new Exception();
}
2024-12-18 12:37:00 +03:00
}