C# 反射获取私有静态方法详解
基本步骤
Type targetType = typeof(GraphicsFormatUtility);
MethodInfo methodInfo = targetType.GetMethod(
"GetFormat",
BindingFlags.Static |
BindingFlags.NonPublic
);
object result = methodInfo.Invoke(null, new object[] { param1 });
GraphicsFormat format = (GraphicsFormat)result;
BindingFlags 主要选项
标志 | 说明 |
---|
BindingFlags.Public | 公开成员 |
BindingFlags.NonPublic | 私有成员 |
BindingFlags.Static | 静态成员 |
BindingFlags.Instance | 实例成员 |
BindingFlags.DeclaredOnly | 仅当前类声明的成员(不包含继承) |
常见组合
获取私有静态方法
BindingFlags.NonPublic | BindingFlags.Static
获取私有实例方法
BindingFlags.NonPublic | BindingFlags.Instance
获取所有静态方法(公开+私有)
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static
获取当前类的所有成员
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.DeclaredOnly