c# - 在运行时更改访问修饰符

标签 c# reflection access-modifiers

我这样写只是为了举例:

public class MyClass
{
    private int MyMethod()
    {
        return 1;
    }
}

是否有任何方法可以使用反射或其他方法在运行时将MyClass::MyMethod() 的访问修饰符更改为public 然后调用它?

最佳答案

不确定是否可以修改访问说明符,但可以通过反射调用私有(private)方法,如:

MyClass instance = new MyClass();
MethodInfo yourMethod = instance
                            .GetType()
                            .GetMethod("MyMethod", BindingFlags.NonPublic | BindingFlags.Instance);
var returnValue = yourMethod.Invoke(instance, new object[] { });
Console.WriteLine(returnValue);

关于c# - 在运行时更改访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19325361/

相关文章:

c# - 远程服务器返回错误 : (403) Forbidden in Asp.net C# Instagram.(HttpWebRequest)

c# - 如何捕获使用 MethodInfo.Invoke 调用的方法中抛出的异常?

Java : loop on all the classes in the classpath

java - `public/protected/private` 关键字对性能有影响吗?

java - 外部类访问包私有(private)方法

c# - 在另一个窗体 View 中单击按钮时窗体 View 数据源丢失

c# - 在 C# 中枚举文件句柄

c# - 在 Entity Framework 中使用 'Contains' 子句类似于 'IN' SQL 子句

c# - 是否有等效于 Java 的 ToStringBuilder for C#?一个好的 C# 版本有什么特点?

java - Java中 protected 和包私有(private)的访问修饰符之间的区别?