Nein, dies ist keine Frage über Generika.Activator.CreateInstance (String) und Activator.CreateInstance <T>() Unterschied
Ich habe ein Factory-Muster mit mehreren Klassen mit internen Konstruktoren (ich will nicht, dass sie instanziiert werden, wenn nicht durch die Fabrik).
Mein Problem ist, dass CreateInstance
mit einem Fehler "kein parameterless Konstruktor für dieses Objekt definiert" fehlschlägt, es sei denn, ich übergeben "True" auf den nicht öffentlichen Parameter.
Beispiel
// Fails
Activator.CreateInstance(type);
// Works
Activator.CreateInstance(type, true);
ich die Fabrik generic, um es ein wenig einfacher, wie diese machen wollte:
public class GenericFactory<T> where T : MyAbstractType
{
public static T GetInstance()
{
return Activator.CreateInstance<T>();
}
}
Allerdings war ich nicht in der Lage zu finden, wie man sich zu, daß „true“ Parameter, um nicht-öffentliche Konstruktoren (intern) zu akzeptieren.
Habe ich etwas übersehen oder ist das nicht möglich?
hat Warum nicht einen parameterlosen Konstruktor mit dem privaten boolean Variable auf true gesetzt definieren? – Vivek