mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
[+] TEngineServer
[+] TEngineServer
This commit is contained in:
37
Assets/GameScripts/DotNet/Core/Singleton/Singleton.cs
Normal file
37
Assets/GameScripts/DotNet/Core/Singleton/Singleton.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System.Threading.Tasks;
|
||||
#pragma warning disable CS8601
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace TEngine.Core
|
||||
{
|
||||
public abstract class Singleton<T> : ISingleton where T : ISingleton, new()
|
||||
{
|
||||
public bool IsDisposed { get; set; }
|
||||
|
||||
public static T Instance { get; private set; }
|
||||
|
||||
private void RegisterSingleton(ISingleton singleton)
|
||||
{
|
||||
Instance = (T) singleton;
|
||||
AssemblyManager.OnLoadAssemblyEvent += OnLoad;
|
||||
AssemblyManager.OnUnLoadAssemblyEvent += OnUnLoad;
|
||||
}
|
||||
|
||||
public virtual Task Initialize()
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
protected virtual void OnLoad(int assemblyName) { }
|
||||
|
||||
protected virtual void OnUnLoad(int assemblyName) { }
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
IsDisposed = true;
|
||||
Instance = default;
|
||||
AssemblyManager.OnLoadAssemblyEvent -= OnLoad;
|
||||
AssemblyManager.OnUnLoadAssemblyEvent -= OnUnLoad;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user