Ich habe eine Liste von Zeichenfolgen, die einen anderen Namen für Ereignistypen hätten. Der Code ist unten,Klasse dynamisch in C# aus einer Liste von Zeichenfolgen erstellen
public class Main
{
public void Run()
{
List<string> classList = new List<string>
{
"Event_one",
"Event_two"
};
foreach (string item in classList)
{
IEvent ent;
switch (item)
{
case "Event_one":
ent = new EventOne();
ent.HandlEvent();
break;
case "Event_two":
ent = new EventTwo();
ent.HandlEvent();
break;
}
}
}
}
public class EventOne : IEvent
{
public void HandlEvent()
{
throw new NotImplementedException();
}
}
public class EventTwo : IEvent
{
public void HandlEvent()
{
throw new NotImplementedException();
}
}
public interface IEvent
{
void HandlEvent();
}
Wie kann ich die switch-Anweisung entfernen und den Code lockerer gekoppelt machen ?. Mein Code befindet sich in der Website/App_code.
'entfernen Sie den Schalter statement', was genau wollen Sie dann? Sie möchten eindeutig ein Factory-Muster, aber Sie müssen eine Art von Test auf Ihre Eingabe durchführen, um zu wissen, welche Instanz Sie wollen. Sie könnten Reflektion verwenden, aber ich würde nicht argumentieren, dass es in Ihrem Fall besser ist, bis Sie einen Grund haben, es zu benutzen. – Jonesopolis
Sie könnten anstelle einer switch-Anweisung ein Wörterbuch verwenden, das den Code ein wenig sauberer macht. Siehe https://gist.github.com/jcebuck/6d57e70761ebabf1a3aa83fb27af077a –
@james Buck danke das ist viel sauberer. – Joshua