Так что я имел этот Singleton кодЭто ошибка? Activator.CreateInstance с конструктором модификатора частного доступа?
public class Foo
{
private static Foo instance;
private Foo() { }
public static Foo Instance
{
get
{
if (instance == null) instance = Activator.CreateInstance<Foo>();
return instance;
}
}
}
Который не работает, потому что конструктор Foo установлен на частные (бросает исключение, которое не конструктор без параметров для этого класса не найден).
Традиционный new Foo()
работает там, хотя (конечно). Я знаю, что Activator не может получить доступ к частному конструктору Foo из-за ограничений доступа, но я думал, что каждый экземпляр объекта был выполнен Activator: так почему Активатор не работает в этом контексте?
Спасибо!
Вероятно, вы имеете в виду другое переопределение [CreateInstance] (http://msdn.microsoft.com/en-us/library/2ca9yys8%28v=vs.110%29.aspx) в вашем «экземпляре было сделано Activator» ? –
Почему? новый Foo() намного короче. – wonko79
@ wonko79 академический вопрос. Кроме того, есть много раз, когда вы вынуждены делать Activator.CreateInstance, и я хотел бы знать. – Gaspa79