试图创建可在应用程序域之间传递的类作为参数c#

|| 那就是我想要做的: 我创建了我想成为将在两个应用程序域之间传递的参数的类。在文件ClassLibrary1.dll中:
    [Serializable]
    public class MyClass
    {          
        public string mystr = \"NotWorking!\";

         public MyClass(string _mystr)
         {
            mystr = _mystr;
         }            
         public override string ToString()
         {
             return mystr;
         }
}
然后,我创建了另一个类,该类将是将MyClass用作otherdomainclass.dll中的参数的类:
public class OtherDomainClass : MarshalByRefObject, IOtherDomainClass
{
    #region Implementation of IOtherDomainClass

    private MyClass my;
    public MyClass getParam()
    {
        return my;
    }

    public void setParam(MyClass _param)
    {
        my = _param;
    }

    #endregion
}
并在iotherdomainclass.dll中为该类定义了接口:
public interface IOtherDomainClass
{
    MyClass getParam();
    void setParam(MyClass _param);
}
现在我正在尝试运行以下测试:
[TestMethod()]
    public void PassMyclassBetweenDomains()
    {
        domain = AppDomain.CreateDomain(appDomainName);
        otherClass = domain.CreateInstanceFromAndUnwrap(location, \"OtherDomain.OtherDomainClass\") as IOtherDomainClass;
        Assert.IsNotNull(otherClass);
        otherClass.setParam(new MyClass(\"Working!\"));
        string sparam = otherClass.getParam().ToString();
        Assert.AreEqual(sparam, \"Working!\");
        AppDomain.Unload(domain); 
    }
测试失败,并出现以下错误:
Test method SerizalizableDataTypesTest.ParamCollectionTest.PassMyclassBetweenDomains threw exception 
    System.Runtime.Serialization.SerializationException: Unable to find assembly        \'ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\'.
抱歉,长话短说,我不确定我做错了什么。或者,如果所有代码从一开始都是错误的,请您帮我重新创建它。 非常感谢你!!!     
已邀请:
        由于您创建的“ 5”类型位于尚未在第二个AppDomain中加载的程序集中,请考虑直接在第二个AppDomain中加载该程序集。 您的示例类比需要的复杂,因为您没有执行任何需要自定义序列化/反序列化代码的操作。这将更易于维护:
[Serializable]
public class MyClass
{
   public string mystr = \"NotWorking!\";
   public MyClass(string _mystr)
   {
      mystr = _mystr;
   }
   public override string ToString()
   {
      return mystr;
   }
}
    

要回复问题请先登录注册