Add foundation

This commit is contained in:
TheXamlGuy
2024-04-13 11:29:32 +01:00
parent 6f31aa8513
commit 053d8a851e
264 changed files with 3428 additions and 4683 deletions
+72
View File
@@ -0,0 +1,72 @@
using CommunityToolkit.Mvvm.ComponentModel;
namespace Toolkit.Foundation;
public partial class ObservableViewModel :
ObservableObject,
IObservableViewModel,
IInitializer,
IActivated,
IDeactivating,
IDeactivated,
IDeactivatable
{
[ObservableProperty]
private bool isInitialized;
public ObservableViewModel(IServiceProvider serviceProvider,
IServiceFactory serviceFactory,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer)
{
ServiceProvider = serviceProvider;
ServiceFactory = serviceFactory;
Publisher = publisher;
Disposer = disposer;
subscriber.Add(this);
}
public event EventHandler? DeactivateHandler;
public IDisposer Disposer { get; }
public IPublisher Publisher { get; }
public IServiceFactory ServiceFactory { get; }
public IServiceProvider ServiceProvider { get; }
public virtual Task Activated() =>
Task.CompletedTask;
public Task Deactivate()
{
DeactivateHandler?.Invoke(this, new EventArgs());
return Task.CompletedTask;
}
public virtual Task Deactivated() =>
Task.CompletedTask;
public virtual Task Deactivating() =>
Task.CompletedTask;
public void Dispose()
{
GC.SuppressFinalize(this);
Disposer.Dispose(this);
}
public Task Initialize()
{
if (IsInitialized)
{
return Task.CompletedTask;
}
IsInitialized = true;
return Task.CompletedTask;
}
}