可以說我有一個泛型類:找出一個泛型類的類型
class Foo {
// protected Type t;
// public void SetT(string strval) {
// ((Foo<t>)this).Set(strval);
// }
}
class Foo<T> : Foo {
private T val;
public void Set(string strval) {
if (this is Foo<float>) {
this.val = float.Parse(strval);
} else if (this is Foo<int>) {
this.val = int.Parse(strval);
}
}
}
現在我創建一個對象,並把它放在一個ArrayList:
ArrayList a = new ArrayList();
a.Append(new Foo<float>);
然後我忘了類型Foo <>。現在,我該如何設置?我嘗試了明顯的候選人:
(Foo)a[0].Set("5.0");
(Foo<a[0].GetType()>)a[0].Set("5.0");
但那些失敗。
有沒有一種方法,我可以調用該方法沒有明確知道Foo的類型<>?
如果沒有,我可以以某種方式將Foo類型保存到Foo.t中,然後取消註釋並使用Foo.SetT?
啊,仿製藥。很不錯的工具,如果你知道如何使用它們:-)
問候, dijxtra
有沒有在這裏使用泛型一個特別的原因? – Gabe