The Lazy<T>
инстанцируется анонимный метод следующим образом:
new Lazy<Singleton>(() => new Singleton());
Анонимные методы под одеялом только частные методы, расположенные в классе, который определяет их. Поскольку это метод в классе, ему разрешен доступ к любым другим частным членам этого класса, включая частный конструктор.
код С # компилятор генерирует очень напоминает следующее:
Func<Singleton> factory = this.__compiler_generated_method;
new Lazy<Singleton>(factory);
private static Singleton __compiler_generated_method()
{
return new Singleton();
}
я вижу, поэтому нужно передать конструктор T в качестве анонимного метода конструктора '' Лазы –
Ondrej