В настоящее время я проверяю с помощью этого контракта, что параметр и возвращаемое значение не равны нулю. Теперь мне нужен способ проверить, что независимо от того, какую ветвь переключателя он использует, результирующий 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;
}
}