相关疑难解决方法(0)

如何使用反射来调用私有方法?

我的类中有一组私有方法,我需要根据输入值动态调用一个.调用代码和目标方法都在同一个实例中.代码如下所示:

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType);
dynMethod.Invoke(this, new object[] { methodParams });
Run Code Online (Sandbox Code Playgroud)

在这种情况下,GetMethod()不会返回私有方法.什么BindingFlags我需要提供以GetMethod()使其能找到私有方法?

.net c# reflection private-methods

314
推荐指数
6
解决办法
16万
查看次数

C#:通过反射访问继承的私有实例成员

我是C#反思的绝对新手.我想使用反射来访问类中的所有私有字段,包括那些继承的字段.

我成功访问了所有私有字段,不包括那些继承的字段,以及所有公共和受保护的继承字段.但是,我无法访问私有的继承字段.以下示例说明:

class A
{
    private string a;
    public string c;
    protected string d;
}

class B : A
{
    private string b;
}

class test
{
    public static void Main(string[] Args)
    {
        B b = new B();       
        Type t;
        t = b.GetType();
        FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic
                                         | BindingFlags.Instance); 
        foreach(FieldInfo fi in fields){
             Console.WriteLine(fi.Name);
        }
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

这无法找到Ba字段

是否有可能实现这一目标?显而易见的解决方案是将私有的继承字段转换为受保护的字段.然而,目前这是我无法控制的.

c# reflection

17
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

reflection ×2

.net ×1

private-methods ×1