C# 类是否在prism中引用自身静态反模式
我有一个应用程序,我的设计方法如下:C# 类是否在prism中引用自身静态反模式,c#,design-patterns,prism,C#,Design Patterns,Prism,我有一个应用程序,我的设计方法如下: class Manager { public int State; static Manager _instance = null; public static Manager Instance { get { return _instance; } set { if (_instance == value) return
class Manager
{
public int State;
static Manager _instance = null;
public static Manager Instance
{
get { return _instance; }
set
{
if (_instance == value)
return;
_instance = value;
}
}
public Manager()
{
State = 0;
Instance=this;
}
}
class Module1
{
public void GetState()
{
Console.WriteLine(Manager.Instance.State);
}
}
class Module2
{
public void GetState()
{
Console.WriteLine(Manager.Instance.State);
}
}
class Module3
{
public void GetState()
{
Console.WriteLine(Manager.Instance.State);
}
}
Manager类已在引导程序中注册,如:
protected override void ConfigureContainer()
{
base.ConfigureContainer();
Container.RegisterType<Manager>(new ContainerControlledLifetimeManager());
}
protected override void InitializeModules()
{
Manager man= Container.Resolve<Manager>();
}
protected override void ConfigureContainer()
{
base.ConfigureContainer();
RegisterType(新的ContainerControlledLifetimeManager());
}
受保护的覆盖无效初始化模块()
{
Manager man=Container.Resolve();
}
问题是我是否需要将我的manager对象在其字段中定义为静态,以便能够达到其状态?或者这是反模式的,或者对性能不好?如果您只想拥有一个Manager类实例,最好使用方法在容器中注册它。这样,每当您的类被注入依赖代码时,它总是同一个类的实例。在这种情况下,类中不需要静态参数,稍后可以通过引入接口来减少代码的耦合。然后,客户端类将获得(比如)IModule参数,而不是具体的模块对象,并且容器将确保在应用程序的生命周期内,IModule实现对象始终是同一个实例。您预期会有多个Manager实例吗?如果不是,则使用单例模式。请参阅以进行良好的讨论。