Code Contracts の最新情報を取得しようとしています。私には意味をなさない別の問題があります:
これは不変式です:
[ContractInvariantMethod]
void Invariant() {
Contract.Invariant(this._uiRoot.RowDefinitions!=null);
}
次に、メソッドには次のコードがあります。
int colunmn = 0;
foreach (UIElement uiElement in row.Where(element => element!=null))
{
if (uiElement != null)
{
uiElement.SetValue(Grid.ColumnProperty, colunmn++);
uiElement.SetValue(Grid.RowProperty, _uiRoot.RowDefinitions.Count - 1);
_uiRoot.Children.Add(uiElement);
}
}
Invariant にもかかわらず、_uiRoot.RowDefinitions が null である可能性があるという警告が表示されます。すべてのパブリックメソッド呼び出しとコンストラクターの後にチェックされている場合、CodeContracts がそれを考える理由がわかりません。問題のコードはカスタム フォーム デザイナーであり、さまざまなメソッドで uiRoot.RowDefinitions を使用しているため、インバリアントに入れたいと考えました。警告を止めるにはこれで十分だと思いました。