做特殊處理泛型類Pinnew成員的類型達恩·尼利19mins前做特殊處理的一種類型,泛型類
我試圖捲起一些舊的(原來.NET 1.1)抽象類進入泛型。所討論的類都爲特定類型的數據對象提供類似的功能。在大多數情況下,事情進展順利,但我遇到了幾個地方,其中一個數據對象是一種需要額外處理的類型,超出了所有其他類型的需要。我可以檢查T的類型以查看它是否是我需要執行特殊處理的類型,但從T到SpecialType的類型將不會編譯。有沒有不同的方式可以做到這一點,或者我想做什麼不可能?
class MyGenericClass : ICloneable where T: class, new()
{
private T m_storedClass;
...
private DoStuff()
{
//do stuff for all types
//objects of SpecialType need extra stuff done.
if (typeof(T) == typeof(SpecialType))
{
//compiler error: Error Cannot convert type 'T' to 'SpecialType'
((SpecialType)m_storedClass).SpecialString = "foo";
}
}
+1 - 這將是一個更好的方法來做到這一點。 – 2009-07-14 18:54:06
+1 - 好多了。如果youi無法修改存儲的類,另一種方法是專門研究T和TSomething。 – 2009-07-14 18:57:58
在不得不維護實現接口的獨立類的時候,我是否真的獲得了遺留的抽象/繼承類的方法? – 2009-07-14 19:18:31