可以说我有一个泛型类:找出一个泛型类的类型
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