如何从C#中的外部程序集访问“内部”修饰符类属性

时间:2014-02-11 16:21:59

标签: c# .net c#-4.0

首先,我要说我已经看到了解决该问题的一种解决方案,但我发现这主要用于测试目的。

有没有人能给我一个很好的练习方法,从C#中的外部程序集调用内部类的内部静态属性?

如果有人能在C#中给我一个小例子,我将不胜感激。我知道使用“AssemblyVisibleTo”,但我被告知这不是一个好的编码方式。

1 个答案:

答案 0 :(得分:1)

有三种方法可以访问internal数据(无论是否为静态数据):

  1. 反思 - 由于您现在拥有直接依赖于内部实施的外部代码,因此无法保留数据internal
  2. InternalsVisibleTo属性 - 您被告知这是“不是一种很好的编码方式”,大多数人会同意,但是您没有给出替代方案(因此您的问题) )。这与反射具有相同的缺点(它只是使客户端代码更清晰)。
  3. 添加面向公众的API - 如果此数据在程序集之外有用,那么最好的解决方案可能是在其上添加公共API!您仍然可以隐藏内部机制,只要外部接口保持不变,就可以更改内部机制。
  4. 因此,请向您的客户提出这三种替代方案,并了解他们的偏好。