System.Runtime.Serialization.SerializationException:未为成员解析类型

时间:2017-10-03 07:22:26

标签: c# serialization remoting

我编写了一段代码,可以根据需要从磁盘加载DLL文件,然后在客户端完成使用后卸载它们。这个想法是那些DLL正在实现客户端已知的接口,客户端可以将它们用作插件。

在我的第一次测试中,一切似乎都很好,直到我创建了第二个"插件"。第二个插件与我的第一个测试用例相同,但我得到了一个System.Runtime.Serialization.SerializationException。下面你看我能解决的课程。

namespace ResolverTest.TestController1
{
    using System;

    ...

    [Serializable]
    public class TestController1 : IProductController
    {
        public IProductConfigurationValidationResult ValidateProductConfiguration(ProductConfiguration productConfiguration)
        {
            var result = new ProductConfigurationValidationResult();
            result.Success = true;
            return result;
        }

        public IPerformanceCreationResult CreateProductConfigurationPerformance(ProductConfiguration productConfiguration)
        {
            throw new System.NotImplementedException();
        }
    }
}

这是无法解决的课程。

namespace ResolverTest2.TestController2
{
    using System;

    ...

    [Serializable]
    public class TestController2 : IProductController
    {
        public IProductConfigurationValidationResult ValidateProductConfiguration(ProductConfiguration productConfiguration)
        {
            var result = new ProductConfigurationValidationResult();
            result.Success = true;
            return result;
        }

        public IPerformanceCreationResult CreateProductConfigurationPerformance(ProductConfiguration productConfiguration)
        {
            throw new System.NotImplementedException();
        }
    }
}

我得到的确切例外是:

  

未处理的异常:System.Runtime.Serialization.SerializationException:输入i   没有为成员解析' ResolverTest2.TestController2.TestController2,Resolve   rTest2.TestController2,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。

请注意,这两个类都是公共的,因此访问它们没有问题。处理将DLL加载到appdomain中的类继承了MarshalByRefObject,以便正确定义部分。好像TestController1和TestController2之间有一些不同之处。 .net版本是相同的,我甚至检查了程序集信息。它们没有彼此不同的依赖关系,并且它们的引用列表完全相同。最后但并非最不重要的是,解析DLL的类检查传递的路径是否正确,否则抛出异常。

我还应该注意什么?

0 个答案:

没有答案
相关问题