我在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);
    }
}

10-07 17:02