我在XmlSer.dll中有以下课程
namespace xmlser
{
public class XmlSer
{
public Type test(string s)
{
return Type.GetType(s);
}
//...other code
}
}
以及MyApp.exe中的以下代码,该代码链接XmlSer.dll作为参考
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);
}
}
运行MyApp.exe会出错,这意味着XmlSer的ser实例无法获取Testclass的类型(结果为null)。
将XmlSer类直接放在MyApp.exe代码中,我正确地获得了TestClass的类型。
在网上检查后,我发现问题与组件有关。这意味着XmlSer.test方法看不到.exe的程序集,因此它无法解析TestClass的类型。
如何解决XmlSer.dll中的XmlSer和MyApp.exe中的MyApp.MainClass的维护问题?
谢谢。
亚历山德罗
最佳答案
由于这两个不在同一个程序集中,因此您可能需要在类型字符串中包括程序集名称:
Console.WriteLine(ser.test("MyApp.TestClass, MyApp")!=null);
如果您要做的只是序列化任意对象,则可以执行以下操作:
public static class Serialization
{
public static void Serialize(object o, Stream output)
{
var serializer = new XmlSerializer(o.GetType());
serializer.Serialize(output, o);
}
}