.net Can';t从泛型类调用动态方法

.net Can';t从泛型类调用动态方法,.net,generics,.net,Generics,我试图在一个通用存储库中使用两个上下文,我应该使用动态类型调用静态方法GetObjectContext(),比如ObjectContextManager.GetObjectContext() private DataContext GetDataContext() { Type Type=GetContainerType(); 类型paoloGenericClassType=typeof(ObjectContextManager)。MakeGenericType(类型); MethodInfo

我试图在一个通用存储库中使用两个上下文,我应该使用动态类型调用静态方法
GetObjectContext()
,比如
ObjectContextManager.GetObjectContext()

private DataContext GetDataContext()
{
Type Type=GetContainerType();
类型paoloGenericClassType=typeof(ObjectContextManager)。MakeGenericType(类型);
MethodInfo method=paoloGenericClassType.GetMethod(“GetObjectContext”,BindingFlags.Static);
返回方法.Invoke(null,BindingFlags.Static,null,null,null)作为DataContext;
}

我正在尝试不同的变体,但不起作用。我怎样才能做到这一点呢?

我怀疑问题在于绑定标志。尝试
BindingFlags.Static | BindingFlags.Public
,假设它是一个公共方法


如果这不起作用,请告诉我们实际发生了什么,而不仅仅是说它不起作用。

查看这篇关于如何通过反射调用泛型方法的文章


DaTribe

谢谢。我尝试这个变量private DataContext GetDataContext(){Type Type Type=GetContainerType();Type paoloGenericClassType=typeof(ObjectContextManager)。MakeGenericType(Type);返回paoloGenericClassType.InvokeMember(“GetObjectContext”,BindingFlags.Static | BindingFlags.Public | BindingFlags.InvokeMethod,null,null,new object[]{})作为DataContext;}但是我有同样的错误。@Alex:很明显,您的类型初始值设定项引发了一个异常。我建议您在其上设置一个断点,然后查看调试器中发生了什么。
private DataContext GetDataContext()
    {
        Type type = GetContainerType();
        Type paoloGenericClassType = typeof(ObjectContextManager<>).MakeGenericType(type);

        MethodInfo method = paoloGenericClassType.GetMethod("GetObjectContext", BindingFlags.Static);
        return method.Invoke(null, BindingFlags.Static, null, null, null) as DataContext;
    }