2017-10-16 13 views
2

私はexampleをYouTubeに実装しようとしていますが、チューターはそれを正しく取りましたが、エラーが発生しました。
私はすでにプライベートコンストラクタを持っています。私は自分のコードにpublicコンストラクタを持てません。lazily-initializeタイプにパブリックパラメータなしコンストラクタがありません

private static int _InstanceCount = 0; 

private SingletonDemo1() 
{ 
    _InstanceCount++; 
    Console.WriteLine("Instance Count: " + _InstanceCount.ToString()); 
} 

private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>(); 

public static SingletonDemo1 Instance 
{ 
    get 
    {        
     return _Instance.Value; 
    } 
} 

答えて

2

手動でちょうどデモビデオ

private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>(() => new SingletonDemo1()); 

注使用ファクトリ関数のようにレイジーのコンストラクタでオブジェクトを初期化する必要がある例によります。

このコードがないと、オブジェクトを初期化するためにリフレクションを使用しようとしますが、すでに述べたようにコンストラクタはプライベートなので失敗します。そのため、必要なときにインスタンスを作成する方法をLazyに伝える必要があります。

関連する問題