我試圖在兩個獨立的類之間傳遞一個類的實例,如下所示。將一個類的實例設置爲另一個類時的SerializationException
//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具有相同的完全相同的副本A.
但是,當我嘗試運行此操作時,出現SerializationException,表示類A未標記爲Serializable。我知道我以前做過這樣的事情,並且不希望它被序列化。爲什麼它需要這個呢?我認爲這是爲了xml序列化。
我曾嘗試向類A添加[Serializable]屬性,並且異常顯然消失了。但是做完這些之後,對B類內部的A進行更改將不會傳播到C內部的A實例中,就像它們現在完全獨立的副本一樣。
任何想法?
編輯:沒有意識到這會在以前,但一些環顧四周後,我認爲它確實。 B和C類從MarshalByRefObject類繼承。也許這將有助於弄清楚。我已經更新了上面的類。
這不是我正在使用的實際代碼......它是一個很大的簡化...它必須有別的事情...... – 2009-01-10 21:41:35