隐藏类型在.net中的Assembly.GetTypes中列出

Jer*_*ang 9 c# reflection hidden assemblies

我一直在寻找可能的解决方案,但似乎无法找到答案.我的问题是我有一些类需要完全隐藏在Assembly.getTypes中,因为我正在为一个应用程序编写一个插件,它正在拾取我需要保持隐藏的类型(即使它们被声明为私人或内部课程).

任何人都知道如何改变assembly.GetTyes返回什么,或者一个aficionado属性,以防止这些类型被列出?

Aus*_*nen 6

这是一个非常黑客,非常脆弱,但可以工作.

创建2个程序集 - 一个用于插件,第二个用于其他类型.第二个将放在另一个已知目录中,并在需要时动态加载到第一个目录中.(例如,通过Assembly.LoadFrom.)

然后将第一个程序集放在插件目录中,并且只发布其类型.这非常脆弱,因为您可能不得不硬编码第二个程序集的路径,并且存在文件被删除或移动的风险.

EDIT
@SLaks的评论消除了这个解决方案的脆弱性.如果您将第二个程序集作为资源嵌入并在运行时加载它,则应用程序调用Assembly.GetTypes将不会看到您想要隐藏的类型.

  • 您可以从嵌入式资源加载第二个程序集. (3认同)