Ich habe die folgende Klasse in XmlSer.dllC#: Type.GetType aus einer DLL auf exe Typ string genannt
namespace xmlser
{
public class XmlSer
{
public Type test(string s)
{
return Type.GetType(s);
}
//...other code
}
}
und der folgende Code in MyApp.exe, die XmlSer Links .dll als Referenz
namespace MyApp
{
public class TestClass
{
public int f1 = 1;
public float f2 = 2.34f;
public double f3 = 3.14;
public string f4 = "ciao";
}
class MainClass
{
public static void Main(string[] args)
{
TestClass tc = new TestClass();
XmlSer ser = new XmlSer();
Console.WriteLine(ser.test("MyApp.TestClass")!=null);
}
}
Lauf MyApp.exe I falsch bekommen, das bedeutet, dass ser Instanz von XmlSer ist nicht in der Lage, den Typ Testklasse zu erhalten (das Ergebnis ist Null). Setzen XmlSer Klasse direkt in MyApp.exe Code ich bekomme richtig den Typ TestClass.
Überprüfung im Internet habe ich festgestellt, dass das Problem mit den Baugruppen zusammenhängt. Das bedeutet, dass die Assembly von .exe für die XmlSer.test Methode nicht sichtbar ist, so dass es den Typ TestClass nicht auflösen kann.
Wie kann ich das Problem maintaing XmlSer in XmlSer.dll und MyApp.MainClass in MyApp.exe lösen?
Danke.
Alessandro
Wie kann ich die ID des Anrufers Baugruppe (MyApp in diesem Fall) zu bekommen? Wie wäre es, wenn ich den in einer zweiten DLL enthaltenen Typ erkennen möchte? Gibt es keine Möglichkeit, die Baugruppe eines bestimmten Typs automatisch zu erkennen? Ich suche nach etwas wie einem globalen GetType, der den Typ in allen Assemblies erkennt. Danke – alexroat
Sie erhalten nicht die ID des Anrufers. Der Aufrufer kennt die Assembly des Aufrufers, also die Assembly des Typs. Sie möchten keine Methode, die jede Assembly durchsucht. Es könnte sehr viele von ihnen geben, und Sie müssen möglicherweise Metadaten laden, um die Suche durchzuführen. –
Was ist Ihr Hauptziel hier? Was versuchst du zu erreichen? Ihre Klasse heißt "XmlSer". Versuchen Sie XML-Serialisierung durchzuführen? Bitte geben Sie einen Zusammenhang, und wir können vielleicht besser helfen. –