Rozszerzenia działają na instancjach, a nie na tworzenie metod statycznych. Możesz rozszerzyć bazę Enum przy pomocy public static void MyExtensions(this Enum value)
. Ale to nadal tworzyłoby tylko metody na instancje Enum, które tworzysz. Jedynym sposobem dodania statycznych metod, takich jak na przykład zewnętrzne, jest klasa, która jest klasą częściową.
Edit: coś zrobić jak chcesz napisałem następujący
public static bool IsFlagSet<T>(this Enum value, Enum flag)
{
if (!typeof(T).IsEnum) throw new ArgumentException();
if (value == flag) return true;
return ((int)Enum.Parse(typeof(T), value.ToString()) &
(int)Enum.Parse(typeof(T), flag.ToString())) != 0;
}
* ostrzeżenie, metoda ta musi być przemyślane bardziej przed użyciem, Mam nadzieję, że istnieje lepszy sposób to zrobić .
http://stackoverflow.com/questions/1415140/c-enums-can-my-enums-have-friendly-names –
Może to? http://msdn.microsoft.com/en-us/library/bb383974.aspx – Asher