私は理解できない問題に直面しています。
クラス内とクラスpublic void Method1(object obj)
内の2 つのメソッドがあるとします。ViewModel
public void Method2(object obj)
Model
Method2
Method1
クラスのインスタンスを使用して呼び出されますModel
(たとえば、objMはクラスのオブジェクトであり、Model
クラスのメンバーですViewModel
)。
class ViewModel
{
public void Methods1(object obj)
{
if (!(
( (false == this.HasSal)
&& (typeof(Class1) == obj.GetType())
)
||
( (true == this.HasSal)
&& (typeof(Class2) == obj.GetType())
)
)
)
{
throw new ArgumentException("invalid obj");
}
Contract.EndContractBlock();
objM.Method2(obj);
.....
}
}
class Model
{
public void Method2(object obj)
{
Contract.Requires(
( (false == this.HasSal)
&& (typeof(Class1) == obj.GetType())
)
||
( (true == this.HasSal)
&& (typeof(Class2) == obj.GetType())
)
);
.....
}
}
コードをビルドしようとするたびに、Visual Studio は次の警告を生成します。
Code contracts: Requires unproven
(
( (false == this.HasSal)
&& (typeof(Class1) == obj.GetType())
)
||
( (true == this.HasSal)
&& (typeof(Class2) == obj.GetType())
)
)
提案してください。