不明なタイプを逆シリアル化できないことを理解しました。
ただし、効率的なコードを作成するために、さまざまなタイプに対してX個のオーバーロードを持つ逆シリアル化するメソッドを作成したくありません。
EG、私のメソッドシグネチャはこれらである可能性があります(増え続けるリスト)
static void deserialiseThis(Dog d)
{
Stream reader = new FileStream(@"C:\Documents and Settings\Name\Desktop\demo.xml", FileMode.Open);
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(d.GetType());
Dog d = (Dog)xs.Deserialize(reader);
DoSomethingDoggy(d);
}
static void deserialiseThis(Cat t)
{
//again but for cat
}
static void deserialiseThis(Mouse t)
{
//again but for mouse
}
これを行うのはきれいなようです
static void deserialiseThis<T>(T t)
{
//logic
}
また
static void deserialiseThis(Type t)
{
//logic
}
ただし、このメソッドの問題は、Tを使用してオブジェクトをインスタンス化できないことです。ただし、タイプが何であるかを理解することはできます。
ファクトリパターンを使用するのに理想的な時期ですか?