首页 新闻 会员 周边

函數如何利用泛型返回動態類型

0
悬赏园豆:5 [已解决问题] 解决于 2009-02-16 21:33

函數如何利用泛型返回動態類型?

不使用返回object類型

woody.wu的主页 woody.wu | 老鸟四级 | 园豆:3621
提问于:2009-02-16 12:25
< >
分享
最佳答案
0

class C<T>
{
  public void Test(T t)
  {
    Console.WriteLine(t);
  }
}

要利用反射动态创建该类型实例,并调用 Test 方法,我们可以使用如下方法。

Type type = typeof(C<int>);
object o = Activator.CreateInstance(type);
type.InvokeMember("Test", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, new object[] { 123 });


但如果泛型参数是未定的,我们该如何处理呢?其实 Type 已经增加了类似的处理机制。

static void InvokeTest(Type t, params object[] args)
{
  Type type = typeof(C<>);
  type = type.MakeGenericType(t);
  object o = Activator.CreateInstance(type);
  type.InvokeMember("Test", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, args);
}

参考:http://www.rainsts.net/article.asp?id=381
Todd Wei | 初学一级 |园豆:170 | 2009-02-16 12:59
其他回答(2)
0

mark

Jared.Nie | 园豆:1940 (小虾三级) | 2009-02-16 13:08
0

public T GetResult<T>(){
return default(T);
}

I,Robot | 园豆:9783 (大侠五级) | 2009-02-16 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册