Я пытаюсь передать экземпляр класса между двумя отдельными классами, как показано ниже.
//classes
public class A
{
public string name;
public string data;
}
public class B : MarshalByRefObject
{
public A _a;
}
public class C : MarshalByRefObject
{
public A _a;
}
//main program
static void Main(string[] args)
{
B _b = new B();
C _c = new C();
_b._a = new A();
_c._a = _b._a;
}
A существует в обоих классах B и C, и я хочу сделать экземпляр класса A в C равным этому экземпляру класса A в B. Я в основном хочу убедиться, что B и C та же точная копия А.
Однако, когда я пытаюсь выполнить это, я получаю исключение SerializationException, в котором говорится, что класс A не помечен как Serializable. Я знаю, что делал подобные вещи раньше, и никогда не хотел, чтобы это было сериализовано. В любом случае, зачем это нужно? Я думал, что это для сериализации XML.
Я попытался добавить атрибут [Serializable] в класс A, и исключение, очевидно, исчезло. Но после этого внесение изменений в A внутри класса B не распространится на экземпляр A внутри C ... как будто они теперь полностью отдельные копии.
Есть идеи?
Редактировать: раньше не понимал, что это будет иметь значение, но после некоторого осмотра я думаю, что это имеет значение. Классы B и C наследуются от класса MarshalByRefObject. Может быть, это поможет понять это. Я обновил классы выше.