我创建了名称为SingletonGenerator<>
的泛型类。用于实现Singelton设计模式。所以,下面的代码是它的类:为什么静态方法在单例实例中不可用?
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' –
你能不能读编译错误? –