Derzeit, wenn ich eine Klassenart habe und wissen muss, ob die Klasse erstellt werden kann. Ich werde Activator.CreateInstance(type);
anrufen und das Ergebnis wegwerfen.Testen Sie, ob eine Klassenart mit Activator instanziiert werden kann, ohne sie zu instanziieren.
Dies scheint sehr ineffizient und problematisch.
Gibt es eine alternative Möglichkeit zu bestätigen, dass ein Klassentyp für die aktuelle Anwendung instanziiert werden kann?
Ich muss diesen Test als Teil des Anwendungsstarts durchführen. Um sicherzustellen, dass jede Fehlkonfiguration frühzeitig erkannt wird. Wenn ich es belasse, bis eine Instanz der Klasse benötigt wird, dann kann der Fehler auftreten, wenn niemand da ist, um es zu reparieren.
Hier ist was ich jetzt mache.
string className = string.Format("Package.{0}.{1}", pArg1, pArg2);
Type classType = Type.GetType(className);
if (classType == null)
{
throw new Exception(string.Format("Class not found: {0}", className));
}
try
{
// test creating an instance of the class.
Activator.CreateInstance(classType);
}
catch (Exception e)
{
logger.error("Could not create {0} class.", classType);
}
Dies ist ein guter Ansatz. Vielen Dank. – cgTag