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
    {
    }
}