我創建了名稱爲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' –
你能不能讀編譯錯誤? –