我想建立一個泛型類,我可以用它來實現C#中的參數化屬性。基本代碼我想是這樣的:通過泛型實現的C#參數化屬性類?
public class ParameterizedProperty<typeReturn, typeIndexer> {
private typeReturn oReturn = default(typeReturn);
public typeReturn this[typeIndexer oIndexer] {
get { return oReturn[oIndexer]; }
set { oReturn[oIndexer] = value; }
}
}
但由於typeReturn
未知/不受限制的編譯器plotzing在oReturn[oIndexer]
線。
那麼我如何得到這個工作?我的第一個(好的,第二個)想法是使用Reflection來有條件地找到索引器(並且如果找不到索引器會產生錯誤),或者對類定義使用修飾符。但是如果我使用修飾詞,I???
會是什麼?
感謝您對此問題的任何解決方案!
注意:如何通過反射正確找到索引器(假設)在這裏找到:http://www.dotnet247.com/247reference/msgs/3/16665.aspx(請參閱最後一條消息)。
編輯:正如馬修在下面指出的......我在原始描述中遇到了一些錯誤/錯誤......我自己的錯,真的......原本在睡覺前寫這篇文章!我想要的代碼看起來更像是這樣的:
public class ParameterizedProperty<typeReturn, typeIndexer> {
private typeReturn[] oReturn;
public ParameterizedProperty(typeReturn[] oSource) {
oReturn = oSource;
}
public typeReturn this[typeIndexer oIndexer] {
get { return oReturn[oIndexer]; }
set { oReturn[oIndexer] = value; }
}
}
...你會打賭什麼作品!?
呃,不完全!仍抱怨typeIndexer
(想要一個「int-able」類型),但更多betterer!我還在一個構造函數中添加了一個構造函數來解決這個問題:「我實際上無法設置任何返回值」問題=)
但是,即使這看起來不正確(數組總是被INTs索引,對吧?無需typeIndexer)...
您是否意識到對象的索引器會返回相同類型的實例?這是否意味着樹/圖? – 2010-06-20 14:27:42
不確定我關注Matthew ...如果底層的oReturn是一個bool [],那麼......現在看到它=)T'was是一個錯誤/ bug ...編輯3中的原始問題.. .2 ... – Campbeln 2010-06-21 13:51:29