EDIT : modifié Activator
mais cela ne fonctionne toujours pas.
Je suis assez (très) novice en C# et je suis presque sûr que c'est un doublon, mais j'ai regardé les questions précédentes et je n'arrive toujours pas à comprendre tous les points.
J'essaie de réduire l'odeur du code en remplaçant une partie du code répété par une carte sur une liste générique. Plus précisément, j'ai un code qui ressemble à
var fooNode = node as IFoo;
var barNode = node as IBar;
var bazNode = node as IBaz;
...
if(fooNode != null)
return new FooThing();
if(barNode != null)
return new BarThing();
if(bazNode != null)
return new BazThing();
...
et je veux la généraliser.
Voici ma tentative :
var types = new Dictionary<Type, Type>
{
{typeof(IFoo), typeof(FooThing)},
{typeof(IBar), typeof(BarThing)},
...
}
foreach(var entry in types)
{
var castNode = node as entry.Key;
return Activator.CreateInstance(entry.Value);
}
Naturellement, cela ne fonctionne pas : The type or namespace name 'entry' could not be found (are you missing a using directive or an assembly reference?)
. Pouvez-vous nous aider ? Ce genre de chose est-il possible en C# ?