|
|
|
using System.Diagnostics.CodeAnalysis;
|
|
|
|
|
|
|
|
namespace StabilityMatrix.Core.Attributes;
|
|
|
|
|
|
|
|
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
|
|
|
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
|
|
|
|
public class SingletonAttribute : Attribute
|
|
|
|
{
|
|
|
|
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
|
|
|
|
public Type? InterfaceType { get; init; }
|
|
|
|
|
|
|
|
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
|
|
|
|
public Type? ImplType { get; init; }
|
|
|
|
|
|
|
|
public SingletonAttribute() { }
|
|
|
|
|
|
|
|
public SingletonAttribute(Type interfaceType)
|
|
|
|
{
|
|
|
|
InterfaceType = interfaceType;
|
|
|
|
}
|
|
|
|
|
|
|
|
public SingletonAttribute(Type interfaceType, Type implType)
|
|
|
|
{
|
|
|
|
InterfaceType = implType;
|
|
|
|
ImplType = implType;
|
|
|
|
}
|
|
|
|
}
|