反序列化會是這樣的:
var serializer = new XmlSerializer(typeof(T));
T obj = (T)serializer.Deserialize(new StringReader(value));
設置該屬性可以通過各種方式來完成。優選的是具有類型之間的一些共性,或許一個接口:
interface IFoo {
string property1 { get; }
}
和:
T DeSeriableXMLToObject<T>(string value) where T : IFoo {
var serializer = new XmlSerializer(typeof(T));
T obj = (T)serializer.Deserialize(new StringReader(value));
if(obj.property1 == "200") { ...}
return obj;
}
替代是反射或dynamic
:
T DeSeriableXMLToObject<T>(string value) {
var serializer = new XmlSerializer(typeof(T));
dynamic obj = serializer.Deserialize(new StringReader(value));
if(obj.property1 == "200") { ...}
return obj;
}
順便說一句; DeSeriableXMLToObject<T>
看起來...有點時髦作爲一個名字。我可以建議只是Deserialize<T>
或DeserializeXml<T>
?
你可以發表這個使用動態? – 2012-04-11 03:54:04
@Vetrivelmp喜歡最後一個例子嗎? – 2012-04-11 05:36:54
T DeSeriableXMLToObject這個函數在運行時如何知道T?例如你必須像DeSeriableXMLToObject ()一樣傳遞。但我不知道這是class1還是class1。如何寫這樣的DeSeriableXMLToObject ()?希望你瞭解我的要求。 –
2012-04-11 09:56:13