私は Visual Studio 2012 でプログラムを書いており、2 つの別々のプロジェクトに 1 組のクラスがあります。
プロジェクト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
、このコンテキストではクラスの可視性が本質的にないと考えていることです。アサーションを に変更すればb != null
問題ないようですが、この議論は筋が通らないかもしれません。
誰でもこのアサーションを確認したり、正しい説明をしたりできRequires
ますB
か?