c# - 隐藏类型不在 .net 中的 Assembly.GetTypes 中列出

标签 c# reflection assemblies hidden

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

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

最佳答案

这是一个很好的 hack,非常脆弱,但可以工作。

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

然后第一个程序集将被放置在插件目录中并且只发布它的类型。这非常脆弱,因为您可能必须对第二个程序集的路径进行硬编码,并且冒着文件被删除或移动的风险。

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

关于c# - 隐藏类型不在 .net 中的 Assembly.GetTypes 中列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569030/

相关文章:

scala - 列出所有可见的隐式

java - 如何使用用户选择的构造函数创建实例?

c# - 程序集以及何时不能选择强命名?

c# - web.config 中的 "bindingRedirect"不起作用

java - Java CharSequence 类型的 C# 等价物是什么?

c# - 单元测试和集成测试之间的界限在哪里(例如)?

c# - 如何找到创建对象的程序集?

c# - 同一解决方案中的不同 EntityFramework 版本

c# - Xamarin 解析 Html

c# - BeginInvoke 会阻止 UI,而 Invoke 不会。为什么?