我目前正在使用此合同檢查參數和返回值不爲空。現在,我需要一種方法來檢查,無論交換機需要哪個分支,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;
}
}
感謝您的回覆,但Distinct會從數組中返回不同的元素,並且它可以在除代碼之外的每個字段中包含不同的元素。數組中的元素的代碼屬性必須是唯一的,但不是其他屬性 –
我相應地更改了示例。 –
完美的作品。謝謝! –