ben gibi bir enum bir şey var ki bir arabirim uygulayan bir enum taklit etmek: Ben de arayüzünde görüntülenen değerleri çeki düzen vermek için benim enum bir uzantısı yöntemi oluşturdukDavranış
enum OrderStatus
{
AwaitingAuthorization,
InProduction,
AwaitingDespatch
}
, bu yüzden var gibi bir şey:
: mükemmel yazı here esinlenerek
public static string ToDisplayString(this OrderStatus status)
{
switch (status)
{
case Status.AwaitingAuthorization:
return "Awaiting Authorization";
case Status.InProduction:
return "Item in Production";
... etc
}
}
, ben bir uzantısı yöntemi ile bir SelectList
benim çeteleler bağlamak istiyorumancak
, kullanıcı arayüzünde DisplayString değerlerini kullanmak Birlikte hiç çalışmamasına
: where TEnum has extension ToDisplayString
Açıkçası bunların hiçbiri gidiyor çizgisinde bir kısıtlama eklemek gerekiyordu açılır Güncel yaklaşım, bilmediğim akıllıca bir hile yok.
Böyle bir şeyi nasıl uygulayabileceğim konusunda herhangi bir fikri olan var mı? Tabii ki where TEnum : System.Enum
Eğer Enum kendisinde yöntemlerin bir demet olsun bu şekilde ve tip güvenliğini kaybetmek:
public static string ToOrderStatusDisplayString(this Enum status) { switch ((OrderStatus)status) { ... } }
Sonra Enum TEnum kısıtlamak:
Bu uygulamayı çok kullanıyorum. –
Gerçekten güzel, teşekkürler –
Parlak. Küçük uyarı: varsayılan değerleri kullanamazsınız veya " için varsayılan parametre değeri" derleme zamanı sabiti olmalıdır. –
as9876