Ich arbeite an einer Art von Scheduler, der den Namen einer Klasse aus der Datenbank abruft und dann eine Methode dieser Klasse ausführt.So erhalten Sie die Klassenreferenz von einer gegebenen Zeichenfolge
Das Problem ist, dass ich den Verweis auf die Klasse nicht erhalten kann.
Was ich im Grunde wollen:
using MyNameSpace;
...
Type myType = Type.GetType("MyNameSpace.MyClass");
myInterface myObject = (myInterface)Activator.CreateInstance(myType);
myObject.Run();
Ich weiß, ich brauche den Namen der Assembly, so habe ich versucht, so etwas wie dieses:
Type myType = typeof(object).Assembly.GetType("MyNameSpace.MyClass");
Aber der Typ ist immer null.
Die gewünschte Klasse liegt in der gleichen Lösung, aber in einem anderen Projekt. Wie kann ich die Referenz erhalten, so dass ich die run() Methode ausführen kann?
thx
Was denken Sie, was "typeof (object) .Assembly" tut? Es gibt 'mscorlib' zurück, nicht die referenzierte Assembly. 'mscorlib' enthält keine Typen. Verwenden Sie einen Assembly Qualified Name, siehe [duplizieren] (http://stackoverflow.com/questions/3512319/resolve-type-from-class-name-in-a-different-assembly). – CodeCaster
Das Beispiel im "Duplikat" funktioniert nicht. Es funktioniert nur mit System.String, aber nicht mit meiner eigenen Klasse: Type myType = Type.GetType ("CSTurbo.AppWeb.Lib.Jobs.UpdateMetadataJob, AssemblyName"); – Dave
Klicken Sie dann auf einen oder zwei weitere Links oder versuchen Sie, weitere zu suchen: [Type.GetType ("namespace.abClassName") gibt null zurück] (http://stackoverflow.com/questions/1825147/type-getypenamespace-ab-classname- returns-null), [Get-Typ in referenzierter Assembly durch Angabe des Klassennamens als String?] (http://stackoverflow.com/questions/11994057/get-type-in-referenced-assembly-by-supplying-class-name- als Zeichenfolge). Entweder ist der Typ nicht in dieser Assembly oder diese Assembly ist nicht geladen. Diese Frage wurde schon oft gestellt. – CodeCaster