为什么不做下面的工作呢?
假设定义了System.Type[] allGUIMenuTypes,则基类定义为
public class GUIMenu<T>我想把它像这个伪代码一样使用:(编辑:我不知道怎么把这行放在这里,但它不是伪代码,它是实际代码)
allGUIMenuTypes.ForEach(t => GUIMenu<t>.Close());(不要注意“假冒”linq风格的ForEach,我的问题是关于GUIMenu<t>的)
或者,我也尝试使用反射调用这个静态函数,但是我被困住了,试图找出其余的参数应该是什么.
allGUIMenuTypes.ForEach(T => T.BaseType.GetGenericTypeDefinition()
.InvokeMember("Close",
BindingFlags.Static | BindingFlags.Public......基本上,为了进一步解释我自己,我有一个类型数组,其基本类型是泛型类GUIMenu<T>。我需要从每种类型的基类调用静态函数Close()。
发布于 2013-10-16 15:00:42
给予:
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);
}https://stackoverflow.com/questions/19406471
复制相似问题