【发布时间】:2014-03-11 14:13:33
【问题描述】:
在 C# 中,我们可以将任何成员定义为 Internal,这使其仅在当前程序集中可见:
internal int Age;
我想知道是否有可能扭转这种效果,将其标记为对此程序集私有/受保护,但对指定的其他程序集公开。
这听起来很疯狂,但我们有充分的理由这样做。我们正在使用 Unity3D 游戏引擎,我们所有的游戏逻辑都在“运行时”程序集中。我们还可以为这些类定义自定义编辑器,这允许我们在 IDE 中创建自定义 UI 控件。这些编辑器存在于一个特殊的“编辑器”程序集中。
此编辑器程序集经常需要有关运行时程序集中特定类型的更多信息,然后我们希望将其公开给我们自己的程序集。我们目前的解决方案是通过反射获取特定的私有/受保护成员,但我想知道是否有更好的解决方案。
【问题讨论】:
-
InternalsVisibleTo 可能会有所帮助。
-
“这听起来完全疯了” 是的,确实如此。 “我们有正当理由这样做” 好的,那你能详细说明一下吗?因为,在你刚才的解释中,我没有看到任何正当理由。
-
@UfukHacıoğulları 谢谢!
-
@MarkSeemann 我相信我确实解释了我们的情况,外部程序集需要比当前更多的信息,因为它是 IDE 中的编辑器。
-
“当前”是什么意思?