方法信息返回null,不确定原因

Gav*_*ann 3 c# reflection methodinfo

sealed public class HMethod
{
    public int Calc(string Method, int X1, int X2, int Y1, int Y2)
    {
        MethodInfo HMethodInfo = this.GetType().GetMethod(Method);
        return (int)HMethodInfo.Invoke(
            this, 
            new object[4] { X1, X2, Y1, Y2 }
            );
    }
    int ManhattanH(int X1, int X2, int Y1, int Y2)
    {
        //Blah
    }
    int LineH(int X1, int X2, int Y1, int Y2)
    {
        //Blah
    }
    //Other Heuristics
}
Run Code Online (Sandbox Code Playgroud)

调用new HMethod().Calc("ManhattanH". X1, X2, Y1, Y2)HMethodInfo时为null.创建一个空引用Exception.它应该调用通过文本传递的方法(从文本文件中获取)

已解决:方法是私有的.

Ser*_*-Tm 13

ManhattanH是私人方法.使此方法是公共的或使用BindingFlags.NonPublic.

  • 不要忘记,如果你手动给出`GetMethod`绑定标志,你需要包含`BindingFlags.Instance | BindingFlags.NonPublic`,而不仅仅是`BindingFlags.NonPublic`. (5认同)