Dies sind ähnliche Fragen: How-to: Load a type from a referenced assembly at runtime using a string in Silverlight, GetType on a class in a referenced assembly fails aber keine Antwort funktioniert.Erhalten Sie Typ in referenzierter Assembly, indem Sie Klassenname als Zeichenfolge angeben?
Ich habe ein MVC-Projekt, das Daten aus einer Datenbank bezieht, die die einfachen Typen als Zeichenfolgen enthält. Diese Typen befinden sich in einer referenzierten Assembly, nicht im MVC-Projekt.
So zum Beispiel sagen sie, mein referenzierte Assembly-Name ist MyFramework
und die Ebene Typname Car
, der vollständige Typname MyFramework.Cars.Car
oder MyFramework.Vehicles.Cars.Car
oder eine andere Variation sein könnte. Alles, was ich habe, sind der referenzierte Assemblyname und der einfache Klassenname als Strings. Wie kann ich den Typ unabhängig vom vollständigen Typnamen erhalten?
Zum Schluss, konnte ich eine Funktion in der referenzierten Assembly schreiben, die GetType() aufruft und diese im MvC-Projekt verwendet, damit ich auf den Assemblynamen verzichten konnte? Ich möchte den Namen der Assembly zu entfernen, zu wissen, so dachte ich, dass ich eine Util in der referenzierten Versammlung wie schreiben konnte:
namespace MyFramework //the referenced assembly
{
public static class TypeUtil
{
public static Type GetFrameworkType(string typeName)
{
return Type.GetType(typeName);
}
}
}
Und dann in meinem MVC-Projekt konnte ich es nennen, ohne die Baugruppe als String Namen zu benötigen. Ist das möglich oder werde ich immer den Assemblynamen brauchen?
Warum funktionieren die anderen Antworten nicht? –
@RobertHarvey Es ist, weil ich gerade den einfachen Klassennamen habe. Nicht der vollständige Typname. Diese Antworten beruhen auf der Kenntnis des vollständigen Typs. – SventoryMang