2012-03-13 70 views
1

我想創建一個類來處理資源(紋理,聲音等)的加載。我想創建它,這樣我可以做類似如下的內容:C#使用索引器與模板

ContentHandler contentHandler=new ContentHandler(content); 
Texture2D texture=contentHandler<Texture2D>["picture"]; 

我遇到的問題是,雖然我可以創建索引就好了,我不知道如何使用模板與這樣我可以獲得傳遞給它的特定類型。我可以使用普通的模板函數,但如果可能的話,我會更願意使用上面的模板函數。我嘗試過搜索,但我很難找出任何東西。

+1

請...不是模板,它是一個通用的。 – 2012-03-13 22:37:39

+0

對不起,felix,用於C++ – mirhagk 2012-03-13 22:44:17

回答

3

我懷疑你的問題是真的:

我可以寫一個通用的索引?

如果是這樣的話,答案是否定的。你必須寫一個方法來代替:

Texture2D texture = contentHandler.GetValue<Texture2D>("picture"); 

還要注意的是仿製藥模板。這是值得非常明確的:)

+0

泛型索引器當然是瘋狂的東西。想象一下你可以用它們做甚麼(甚至是普通屬性)。 – 2012-03-13 22:38:50

+0

當我害怕它沒有實施。只要通用索引器會更清潔。謝謝,我想我只會使用必須使用的方法來完成它。 – mirhagk 2012-03-13 22:43:55

1

我認爲你的一個尋找Generics

可能的重複:Why it is not possible to define generic indexers in .NET?

+0

是的,這是我正在尋找與索引器屬性一起使用。這個類本身不能是通用的,因爲它是一個單例。我不想爲40種不同類型的資源提供40個不同的課程。我想使這個方法是通用的,但我無法弄清楚如何創建一個通用索引器(抱歉稱它爲模板,我先學習了C++) – mirhagk 2012-03-13 22:39:30

+0

由於Jon Skeet已經提到過,您可以創建一個通用方法。 http://msdn.microsoft.com/en-us/library/twcad0zb(v=vs.80).aspx – Robar 2012-03-13 22:44:22