2017-08-30 1 views
0

Ich bin auf der Suche nach einer guten Praxis/Idee, wie man einen sauberen Code für meine Lösung schreibt. Sagen wir, ich habe Klasse Foo:Liste der ähnlichen Objekte - verschiedene Methode für jedes Element aufrufen

public class Foo 
{ 
    public SomeEnumType Type { get;set; } 
    .... 
} 

ich wie eine Liste dieser Elemente bekam:

List<Foo> Foos 

Jetzt möchte ich meine Liste iterieren und verschiedene Methoden für jede EnumType aufrufen. Denn jetzt bin so etwas wie dies zu tun ich gerade:

foreach (var x in Foos) 
{ 
    if (x.Type == XXX) 
     invoke first(); 
    else if (x.Type == YYY) 
     invoke second(); 
    ..... 
} 

Es sieht nicht gut aus, wenn ich bekam einen oder zwei Werte in meinem TypeEnum, aber leider muß ich über ~~ 30 und, wie ich es übernehmen wird schrecklich aussehen mit ~~ 30 sonst. Wie man es besser macht? Hat jemand schon mal ein solches Problem getroffen?

Antwort

1

Sie können ein Wörterbuch des Typs verwenden Dictionary<SomeEnumType, Action>

var actions = new Dictionary<SomeEnumType, Action>() 
{ 
    { SomeEnumType.SomeVal,()=>{ Console.WriteLine("test"); } } 
}; 

actions[SomeEnumType.SomeVal](); 
+0

Ja ich diesen Ansatz weiß, aber das ist eine gute Praxis? Wenn ich ein solches Wörterbuch mit 30 Elementen initialisieren muss, wird das nicht als schlechte Praxis angesehen? Frage nur, weil ich diese Technik benutzte, als ich ungefähr ~ 4-5 Elemente hatte, nie für mehr. Aber ich bin Anfänger also frag einfach :) – CSharpBeginner

Verwandte Themen