Ich schrieb nur eine if-Anweisung in den Zeilen derIst dies eine gute Anwendung eines ExtensionMethod?
if (value == value1 || value == value2 || value == value3 || value == value4)
//do something
und es ärgert mich, dass ich den ‚Wert ==‘ wiederholen müssen immer Teil. Meiner Meinung nach dient dies keinem anderen Zweck, als das Lesen zu erschweren.
Ich schrieb die folgende Extension der oben beschriebenes Szenario besser lesbar machen sollte:
public static bool IsEqualToAny<T>(this T value, params T[] objects)
{
return objects.Contains(value);
}
Jetzt kann ich einfach schreiben
if (value.IsEqualToAny(value1, value2, value3, value4))
//do something
Ist das eine gute Verwendung einer Extension?
EDIT:
Vielen Dank für die tollen Antworten. Zur Erinnerung: Ich habe die Methode beibehalten. Während der Vorschlag, dass man einfach new []{value1,value2,value3,value4}.Contains(value)
wahr ist, verwenden könnte, ziehe ich einfach diese Art von if-Anweisung Lesen von links nach rechts (, wenn dieser Wert auf eine dieser statt gleich diesen Wert, wenn diese Werte enthalten). Es ist für mich kein Problem mehr eine Methode in intellisense auf jedem Objekt zu zeigen.
danke. Es ist ziemlich generisch. Ich habe gerade einen Enum-Wert verglichen - er war mit der GUI-Programmierung verwandt, also hatte er keine geschäftliche Bedeutung. –