如何使用反射访问内部类(How to access internal class using Ref

2019-06-18 07:38发布

如何访问内部类的程序集的? 说我要访问System.ComponentModel.Design.DesignerHost。 这里的DesignerHost是一个内部和密封类。

我怎么能写代码加载程序集和类型?

Answer 1:

在一般情况下,你不应该这样做-如果一个类型已被标记内部,这意味着你并不意味着从组件外部使用它。 在以后的版本也可能被删除,改变等。

然而,反射确实允许您访问类型和成员不属于公共-只是寻找这需要重载BindingFlags参数,包括BindingFlags.NonPublic在您传递的标志。

如果你有型(包括装配信息)的全名 ,然后只调用Type.GetType(string)应该工作。 如果你事先知道组装,并且知道组件内的公共类型,然后使用typeof(TheOtherType).Assembly获得装配基准通常是简单的,那么你可以调用Assembly.GetType(string)



Answer 2:

加载程序集并输入您在您的示例引用:

Assembly design = Assembly.LoadFile(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll");
Type designHost = design.GetType("System.ComponentModel.Design.DesignerHost");


文章来源: How to access internal class using Reflection