C# 从类型数组的泛型基类调用静态函数

C# 从类型数组的泛型基类调用静态函数,c#,generics,reflection,C#,Generics,Reflection,为什么下面的工作不起作用 假设定义了System.Type[]allGUIMenuTypes,则基类定义为 public class GUIMenu<T> 基本上为了进一步解释我自己,我有一个类型数组,它的基类型是 通用类GUIMenu。我需要从每种类型的基类调用静态函数Close()。给定: class BaseClass<T> { public static void Close() { Console.WriteLine("Clos

为什么下面的工作不起作用

假设定义了
System.Type[]allGUIMenuTypes
,则基类定义为

public class GUIMenu<T>
基本上为了进一步解释我自己,我有一个类型数组,它的基类型是 通用类
GUIMenu
。我需要从每种类型的基类调用静态函数
Close()

给定:

class BaseClass<T>
{
    public static void Close()
    {
        Console.WriteLine("Closing " + typeof(T).Name);
    }
}

class Derived1 : BaseClass<int>  { }

class Derived2 : BaseClass<double> { }

哪个类定义了
Close()
?您真的应该只引入GUIMenu实现的非泛型基类或接口。发布一个重现问题的示例。这将帮助我们帮助您恢复……BaseType.InvokeMember(“Close”,BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod,null,null);显然,应用程序逻辑有问题。。
allGUIMenuTypes.ForEach(T => T.BaseType.GetGenericTypeDefinition()
                                  .InvokeMember("Close", 
                                  BindingFlags.Static | BindingFlags.Public......
class BaseClass<T>
{
    public static void Close()
    {
        Console.WriteLine("Closing " + typeof(T).Name);
    }
}

class Derived1 : BaseClass<int>  { }

class Derived2 : BaseClass<double> { }
var types = new[] {typeof(Derived1), typeof(Derived2)};

foreach (var type in types)
{
    var method = type.BaseType.GetMethod("Close", BindingFlags.Public | BindingFlags.Static);
    method.Invoke(null, null);
}