我對此感到困惑。但這是我想要做的。這裏是類結構:通過泛型加載類
public class Order
{
public Int32 orderID { get; set; }
public Int32 CustomerID { get; set; }
public Int32 ProductID { get; set; }
public string OrderName { get; set; }
public Product ProductDetails { get; set; }
public Customer CustomerDetails { get; set; }
}
public class Product
{
public Int32 ProductID { get; set; }
public string Name { get; set; }
}
public class Customer
{
public Int32 CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
}
我建立一個通用的方法,即採用XML內容,並創建和裝載傳入的對象類型的實例。我得到了產品和客戶的工作。但是當涉及到訂單時,它會讓人感到困惑。
public static T LoadObject<T>(string Contents) where T : new()
{
T obj = new T();
foreach (PropertyInfo property in typeof (T).GetProperties())
{
if (property.PropertyType.IsValueType || property.PropertyType.IsPrimitive)
{
object propValue = Convert.ChangeType(GetValue(property.PropertyType, Contents),
property.PropertyType);
property.SetValue(obj, propValue, null);
}
else
{
//Type typeArgument = property.PropertyType;
//Type genericClass = t
//object propValue = LoadObject<> (dr);
//property.SetValue(obj, propValue, null);
}
}
return obj;
}
如何以遞歸方式調用此命令,以便訂購客戶和產品?
你不能使用XmlSerializer來完成這個嗎? –
這些類都很小,所以我不太明白你爲什麼需要這樣一個通用的解決方案(YAGNI原則......)。我只是爲它們中的每一個實現了一些「FromXml」方法,並且使它成爲接口方法或其他東西。考慮到反射實際上非常緩慢 - 當你需要處理數以千計的訂單時,它會很明顯。一遍又一遍地檢索同一個PropertyInfo是很昂貴的。 –
這只是我提出的一個例子,以更好地解釋問題。事實上,這些不是課程。而且輸入也不一定是XML。 – katie77