C# 逃离沙箱:反思

C# 逃离沙箱:反思,c#,reflection,escaping,sandbox,bindingflags,C#,Reflection,Escaping,Sandbox,Bindingflags,我有一个很有趣的问题。这有点像沙箱逃跑 目标:获取类的私有方法 我能做的: 1) 按长名称按程序集加载标准程序集 2) 使用GetType和Type的方法 我不能做的: 1) 在代码中使用 2) 在代码中使用系统字。当我加载程序集时,我使用这种hack加载(“系统”+“tem…”) 看起来我可以像这样加载私有方法 myType.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance); 但是我的代码中没有导入BindingFlags

我有一个很有趣的问题。这有点像沙箱逃跑

目标:获取类的私有方法

我能做的:
1) 按长名称按程序集加载标准程序集
2) 使用GetType和Type的方法

我不能做的:
1) 在代码中使用 2) 在代码中使用系统字。当我加载程序集时,我使用这种hack加载(“系统”+“tem…”)

看起来我可以像这样加载私有方法

myType.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance);
但是我的代码中没有导入BindingFlags

好的,我可以创建BindingFlags的实例并使用它的GetField,但它再次返回Object,我不能将其强制转换为BindingFlags

var value = bindingFlagsType.GetField("NonPublic").GetValue(null); //it's Object not BindingFlags
我尝试了Convert.ChangeType方法,但调用了返回对象:)


我如何解决这个问题

我不确定你的问题是什么。你得到的一次性物品可以铸造成IDisposable。使用GetMethod(…)获取的公共方法使用GetProperty(…)写入
System.Reflection.BindingFlags…
?取而代之的是@MaxMustermann,问题是我想获取类的私有方法,因此我需要使用不可用的BindingFlagsimported@thehennyy...looks喜欢这个解决方案,但我有限制№2.将其添加到topicCan您可以执行强制类型转换吗?然后,只需将GetValue的返回或基线整数转换为BindingFlags,如
(BindingFlags)123