A
との間で自分自身をシリアル化できる抽象クラスがありますbyte[]
。
別のクラスは、パラメーターなしのコンストラクターであるか、継承する必要があるC
型でパラメーター化されています。と の間で双方向に変換する必要があります。T
A
C
T
byte[]
Class C <T> where T : A, new() { ... }
問題は次のとおりT
ですbyte[]
。
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 */
}
}