【发布时间】:2017-07-02 08:00:28
【问题描述】:
我创建了名称为SingletonGenerator<> 的泛型类型类。用于实现单格顿设计模式。所以,下面的代码就是类:
SingletonGenerator.cs
public class SingletonGenerator<T> where T : class, new()
{
private static readonly Lazy<T> _instance =
new Lazy<T>(() => new T(), LazyThreadSafetyMode.ExecutionAndPublication);
private SingletonGenerator()
{
}
public static T Instance => _instance.Value;
}
并且,为获取实例创建其他类:
AppDb.cs
public class AppDbContext
{
public string Database { get; set; }
private static string ConnectionString { get; set; }
public static void Send()
{
}
public void Go()
{
}
}
在 Program.cs
中class Program
{
static void Main(string[] args)
{
var context = SingletonGenerator<AppDbContext>.Instance;
var database = context.Database; // is available
var connection = context.ConnectionString; //is not available
context.Go(); // is available
context.Send(); // is not available
}
}
我的问题是为什么单例实例中没有静态方法?
我的代码是否正确?
【问题讨论】:
-
嗯...这些是
static而不是instance成员,因此您可以从类型而不是实例访问它们:AppDbContext.ConnectionString -
你看不到编译错误吗?
标签: c# .net design-patterns singleton