Вот что я пытаюсь сделать:
Я создал класс, который должен быть параметром, который будет передаваться между двумя доменами приложения. В файле 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'.
Извините за длинную историю, я не уверен, какую часть я делаю неправильно. Или, если весь код неверен с самого начала, не могли бы вы мне помочь воссоздать его.
Большое спасибо !!!