2011-01-11 82 views
0

使用這種類型的變量我有一個獲取從DataSource對象具體類型,並在轉換操作

public object DataSource {get;set} and a public string DisplayMember {get;set} 

對象可以採取一切都像一個IList或CustomerListDataSet。

我不知道用戶將在數據源中設置什麼。

我想這

Type myType = DataSource.GetType().UnderlyingSystemType; 

??? myUnknownObjectInstance = (mytype)DataSource; 

我想這是不可能的,即使反射訪問myUnknownObjectInstance.PropertyNameFromDisplayMember並分配它像「彼得」的值?

+1

你不能做你想要做什麼,所以試着告訴我們你想解決什麼問題那導致你失敗​​了這條錯誤的道路。 – 2011-01-11 10:18:25

回答

0

你可以重構類使用泛型?所以你有一個泛型類型的數據源?

0

您可以通過一個

if (DataSource is IList) 
{ 
... 
} 
else if (DataSource is DataTable) 
{ 
... 
} 

明確地確定你的類型,但如果數據源是不通用的,沒有辦法像你這樣的規定,你可以做演員。當它的類型被指定爲參數時,您可以投射它。

您可以通過編寫

PropertyInfo pi = DataSource.GetType().GetProperty(DisplayMember); 
pi.SetValue(DataSource, "Peter"); 
0

訪問屬性,我認爲你只需要DataSource.GetType()