使用Asp.net MVC5应用程序。有一个名为 ContainerAdapter 的类。在我的应用程序中,我需要创建此类实例几次次。
所以我决定创建单个实例流程,如: Singleton 。我的语法如下,从单例实例获取访问属性和类ContainerAdapter方法的问题;
适配器类
public class ContainerAdapter
{
public int Age { get; set; }
public string Name { get; set; }
public int Id { get; set; }
public void HelloWorld()
{
//
}
public string GetHelloWorld()
{
return "";
//
}
}
Singleton
public class Singleton
{
private static Singleton instance = null;
private Singleton()
{
ContainerAdapter apapter = new ContainerAdapter();
}
// Lock synchronization object
private static object syncLock = new object();
public static Singleton Instance
{
get
{
lock (syncLock)
{
if (Singleton.instance == null)
Singleton.instance = new Singleton();
return Singleton.instance;
}
}
}
}
从Singleton实例想要访问方法HelloWorld()和GetHelloWorld()
答案 0 :(得分:1)
你可能想要使用某种IoC容器,而不是手工实现你的单身。
但是如果你真的想亲手实现它,并使用锁进行同步,你最终会得到类似下面代码的东西。你的单例实例是一个ContainerAdapter,所以我把你的两个类合并为一个。您可以编写一些通用的Singleton类,但话又说回来:IoC-containers内置了这种功能。
public class ContainerAdapter
{
public int Age { get; set; }
public string Name { get; set; }
public int Id { get; set; }
public void HelloWorld()
{
//
}
private string GetHelloWorld()
{
return "";
//
}
private static ContainerAdapter instance = null;
// Lock synchronization object
private static object syncLock = new object();
public static ContainerAdapter Instance
{
get
{
lock (syncLock)
{
if (ContainerAdapter.instance == null)
ContainerAdapter.instance = new ContainerAdapter();
return ContainerAdapter.instance;
}
}
}
}