現在、このコントラクトを使用して、パラメーターと戻り値がnullではないことを確認しています。ここで、スイッチのどのブランチを使用する場合でも、結果のIEnumerableのコード値が重複していないことを確認する方法が必要です。これはコードコントラクトを使用して可能ですか?私はContract.ForAllを使おうとしていますが、運がありません。
internal static IEnumerable<MenuItemAction> GetMenuActions(MenuItem menuItem)
{
Contract.Requires(menuItem != null);
Contract.Ensures(Contract.Result<IEnumerable<MenuItemAction>>() != null);
switch (menuItem.Code)
{
case 0:
return new MenuItemAction[3] {
new MenuItemAction(){Code = 0, Label = "."},
new MenuItemAction(){Code = 1, Label = ".."},
new MenuItemAction(){Code = 2, Label = "..."}
};
case 1:
return new MenuItemAction[2] {
new MenuItemAction(){Code = 3, Label = "."},
new MenuItemAction(){Code = 4, Label = ".."}
};
case 2:
return new MenuItemAction[2] {
new MenuItemAction(){Code = 5, Label = "."},
new MenuItemAction(){Code = 6, Label = ".."}
};
default: return null;
}
}