Type.GetMethod() returns null 即使方法确实存在
Type.GetMethod() returns null even though method definitely exists
给定以下代码,为什么方法变量为空?
Type[] typeArgs = { typeof(SomeClass) };
var listRef = typeof(List<>);
var list = Activator.CreateInstance(listRef.MakeGenericType(typeArgs));
var method = list.GetType().GetMethod("Add", BindingFlags.Default, null, typeArgs, null);
我已经尝试了许多不同的重载和 BindingFlags,但仍然没有得到 List<SomeClass>.Add(SomeClass item)
的 MethodInfo。
我确实缺少一些简单的东西,但我们将不胜感激。
字符串"Add"中有两个不可见的字符0x00 0x00
,这是它不起作用的原因之一。您似乎做了一些 copy/paste 操作。
接下来,将绑定标志更改为 BindingFlags.Public | BindingFlags.Instance
:
using System;
using System.Collections.Generic;
using System.Reflection;
namespace GenericReflection
{
class Program
{
static void Main()
{
Type[] typeArgs = { typeof(SomeClass) };
var listRef = typeof(List<>);
var list = Activator.CreateInstance(listRef.MakeGenericType(typeArgs));
var method = list.GetType().GetMethod("Add", BindingFlags.Public | BindingFlags.Instance, null, typeArgs, null);
Console.WriteLine(method);
Console.ReadLine();
}
}
internal class SomeClass
{
}
}
给定以下代码,为什么方法变量为空?
Type[] typeArgs = { typeof(SomeClass) };
var listRef = typeof(List<>);
var list = Activator.CreateInstance(listRef.MakeGenericType(typeArgs));
var method = list.GetType().GetMethod("Add", BindingFlags.Default, null, typeArgs, null);
我已经尝试了许多不同的重载和 BindingFlags,但仍然没有得到 List<SomeClass>.Add(SomeClass item)
的 MethodInfo。
我确实缺少一些简单的东西,但我们将不胜感激。
字符串"Add"中有两个不可见的字符0x00 0x00
,这是它不起作用的原因之一。您似乎做了一些 copy/paste 操作。
接下来,将绑定标志更改为 BindingFlags.Public | BindingFlags.Instance
:
using System;
using System.Collections.Generic;
using System.Reflection;
namespace GenericReflection
{
class Program
{
static void Main()
{
Type[] typeArgs = { typeof(SomeClass) };
var listRef = typeof(List<>);
var list = Activator.CreateInstance(listRef.MakeGenericType(typeArgs));
var method = list.GetType().GetMethod("Add", BindingFlags.Public | BindingFlags.Instance, null, typeArgs, null);
Console.WriteLine(method);
Console.ReadLine();
}
}
internal class SomeClass
{
}
}