繁体   English   中英

使用反射和c#调用静态方法时出现问题

[英]trouble invoking static method using reflection and c#

我有这两个班:

Item<T> : BusinessBase<T> where T : Item<T>
{
     public static T NewItem()
     {
      //some code here
     }
}
Video : Item <Video>
{

}

现在我想使用反射在类Video上调用NewItem()方法。 当我尝试这个:

MethodInfo inf = typeof(Video).GetMethod("NewItem", BindingFlags.Static);

执行此行后的对象inf仍为null。 我可以在类Video上调用静态NewItem()方法吗?

你需要指定BindingFlags。 PublicBindingFlags。 FlattenHierarchy以及BindingFlags。 静态

MethodInfo inf = typeof(Video).GetMethod("NewItem",
    BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);

或者,您可以从声明类型获取方法而不使用BindingFlags。 FlattenHierarchy

MethodInfo inf = typeof(Item<Video>).GetMethod("NewItem",
    BindingFlags.Static | BindingFlags.Public);

我已经尝试过两种方式,但它们都有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM