用戶User的注冊類型有Super和Common兩種
public User
{
RegistrtionType type;
......
}
考慮這樣一種情況,通過某種服務,客戶端會獲得服務器端傳過來的類名以及各個屬性的值,包括User,也有其他的類Product, Shop等,當然這都是字符串。在客戶端,我們需要將這些信息組裝成為一個類實例。我們可以通過if來判斷傳過來的類名,并且new一個實例出來,判斷各個屬性并且賦值。但是如果我們不確定會有哪幾個類傳過來,就無法用if來判斷。此時我們可以使用反射來完成,只要獲得了類名,就可以反射出一個類的實例,然后給屬性賦值。
比如說,服務器端傳過來“User Super",即這是一個User類,其RegistrtionType為Super. 如何將這個Super字符串轉為枚舉?可以使用如下方法,說先反射出一個實例user,然后獲取其屬性,再賦值。
prop.SetValue(user, TypeDescriptor.GetConverter(prop.PropertyType).ConvertFromInvariantString("Super"), null);
新聞熱點
疑難解答