2009-10-14 38 views
0

我有一個控制mycontrol.ascxC#動態類型的GenericCollection物業

這種控制有一個屬性:

private GenericCollection<Item> myCollection; 
public GenericCollection<Item> MyCollection 
{ 
    get { return myCollection; } 
    set { myCollection= value; } 
} 

有誰知道我可以動態地從項目類型更改爲說類型的產品?

+0

你可以發佈GenericCollection的代碼,它會幫助。 – Lazarus 2009-10-14 11:38:21

回答

0

正如你指定C#2.0那麼我認爲答案是你不能。 C#是靜態類型的,並且此代碼將泛型集合類型化爲Item的集合。如果產品是Item的超類,那麼我相信你可以將它們存儲在這個集合中,但是當你從集合中檢索它時,你需要查詢對象類型,因爲它總是會作爲一個Item返回。

我會向你回答一個問題,你想在這個動態替換中達到什麼目的?爲什麼?可能有更好的答案。

編輯

關於它的進一步思考,跟隨評論,你也許可以用一個接口來做到這一點,即:

public IList myCollection { get; set; } 

我還沒有從我的dev站試了一下,走但可能引發其他人同意或糾正我:)

+0

謝謝。 MyControl.ascx是一個頁面控制頁面,通過集合。我想在我的網站中只有一個分頁控件接受各種類型的集合。 – Frawls 2009-10-14 11:55:29

+0

public IList myCollection完美工作! Thants很棒。乾杯 – Frawls 2009-10-14 13:17:37

1

你不能。泛型的一個主要思想是它們是類型安全的。如果您希望能夠更改存儲的類型MyCollection,則需要使用某種類型,其中派生了ItemProduct