English 中文(简体)
C# Generic 方法,并将用xml方法生成的参数类型物体退回
原标题:
  • 时间:2009-05-28 04:20:34
  •  标签:

我有一种方法,希望返回一个参数化型T ie的物体。 <代码>Foo<T>。

T类是从XML档案中的一项扼杀元素,在使用<条码>GetType(的方法范围内进行的。 由于在设立这一类或方法之前,该类或方法都不知道,因此,我要么就直截了当。

是否有办法,我可以回馈一个类型的标的<代码>。 Foo<T> from the non-generic methods?

EDIT:这是一个方法签名,例如:

 public Foo<T> getFooFromXml(string name) {

类型是在什么地方制造的,方法和类别都是非基因的?

最佳回答

回答你的话题:

这种方法的签字无效。 你们需要及时了解T,以便从某种方法中返回。 考虑我在对我最后回答的评论中的建议,即:在我的发言中,“Foo”会有一个单独的接口。

class Foo<T> : IFoo {

   public T DoSomething() {
       ...
   }

   object IFoo.DoSomething() {
      return DoSomething();
   }

}

interface IFoo {
   object DoSomething();
}
问题回答

Yeah,基本上你们必须获得开放式通用型号,并创建封闭式通用型号。

Type openType = typeof(Foo<>);
Type closedType = openType.MakeGenericType(typeof(string));

return Activator.CreateInstance(closedType); // returns a new Foo<string>

EDIT:注意到我使用了上文(Foo<>)的类型,我故意将角逐的方括号空出。





相关问题
热门标签