我有抽象類A
可以序列化自己的往返byte[]
。替換類內的類實例
另一個類C
參數化爲T
類型,它應該是或從A
繼承並且具有無參數構造函數。 C
需要在T
和byte[]
之間進行雙向轉換。
Class C <T> where T : A, new() { ... }
的問題是:如何從byte[]
T
?
我無法使用A
中的某些靜態方法,因爲我無法覆蓋它。我不能撥打T(byte[])
,因爲C#不允許。
我發現的唯一辦法是T
創建實例,並調用從A
覆蓋一些方法,即:
byte[] bytes; // some byte table
T someT = new T();
T.LoadFromBytes(bytes);
我會的工作,但在許多情況下,我只能從字節轉換到的新對象T
。 有沒有更好的解決方案或任何方式做某事,如:
public class SomeTClass : A
{
public SomeTClass(){...}
public void LoadFromBytes(byte[] bytes)
{
SomeTClass newT = Sth(bytes); /* new instance of SomeTClass
is created from bytes */
this = newT; /* can't do this, but I need to replace
current instance with the new one */
}
}
什麼serializa的類型你正在使用?這很重要...... – James 2013-02-11 15:09:41
你的第二句話有點令人困惑,'C'需要'T',但是你的限制是'A'。 – 2013-02-11 15:10:09
你有沒有一個類工廠,每個類型都需要一個實例? – QuentinUK 2013-02-11 15:11:02