我创建了名为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;
}
并为get实例创建其他类:
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
}
}
我的问题是为什么单例实例中没有静态方法?
我的代码是正确的吗?
答案 0 :(得分:1)
对于初学者private
是static
。您无法从其他类访问它。
您也无法从实例访问AppDbContext.ConnectionString;
AppDbContext.Send();
方法。你需要使用类
ionViewDidLoad(){
this.loadDashboardItems();
}
答案 1 :(得分:1)
答案 2 :(得分:1)
因为它们是静态的并且属于类型(在你的情况下是AppDbContext)而不是对象实例,使用单例模式你仍然创建一个实例,即使访问它的属性是静态的。所以你可以用类型名称
来调用它们var connection = AppDbContext.ConnectionString;
AppDbContext.Send();