我正在 Visual Studio 2012 中编写一个程序,并且我在两个单独的项目中有一对类:
项目A:
namespace Test
{
internal class A
{
private A(B b)
{
Contract.Requires(b.X != null);
}
}
}
项目B:
namespace Test
{
internal class B
{
public string X;
}
}
在AssemblyInfo.cs
ProjectB 中,我还有:
[assembly: InternalsVisibleTo("ProjectA")]
这编译得很好,直到我打开 CodeContract 静态分析。此时,我从 ccrewrite: 收到错误消息Member 'Test.B.X' has less visibility than the enclosing method Test.A.#ctor(Test.B)
。
我能想到的唯一可能导致问题的是 CodeContracts 不知道 ProjectA 可以看到 ProjectB 的内部,因此认为B
在这种情况下 class 的可见性基本上是没有的。虽然如果我将断言更改为b != null
,它似乎没问题,所以也许这个论点不成立。
任何人都可以确认这个断言,或者给我一个正确的解释,并且没有删除Requires
、关闭 CodeContracts 或更改 的可见性B
,有没有办法解决这个错误?