对于我的一个项目,我需要在运行时生成一些类,我认为使用 Reflection.Emit 会相当简单,但是当我运行一些调用的生成代码时,我得到了 MemberAccessExceptions在生成器程序集中标记为内部的方法。有没有办法告诉运行时动态程序集应该能够直接访问我自己的代码?我真的不想将这些成员中的任何一个公开暴露给我图书馆的消费者。
关于 InternalsVisibleTo,我不确定在动态生成程序集的情况下我将如何使用它。这甚至可能吗?
最佳答案
InternalsVisibleTo
通过向其他人打开程序集来工作。因此,如果您想从生成的类型中使用程序集 Foo
,则必须在 AssemblyInfo.cs
中为 Foo
指定生成的程序集的名称。
如果您使用 AssemblyBuilder
类发出新的程序集,您可以为生成的程序集指定名称。此名称必须与用于程序集 Foo
中的 InternalsVisibleTo
属性的名称相匹配。
关于.net - 如何让 Reflection.Emit 程序集访问生成程序集中的内部成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/523329/