以下の再帰関数のif文をポリモフィズムに置き換えたいと思います。私はそれについてたくさん読ん条件をポリモフィズムに置き換える方法
、いくつかのユーチューブの動画を参照してくださいが、それでも、実際には、このタスクをより困難にするもの
(つまり、この記事の目的のために簡素化されました)私のコードでそれを行う方法を見ることができません私は、関数の初めでのforeachなステートメントと再帰呼び出し多型が型に基づいている
public void FlattenXml(XElement xml, string id = null)
{
var elements = xml.Elements().ToList();
foreach (var element in elements)
{
if (element.Name == "name1")
{
Func1();
}
if (element.Name == "name2")
{
Func2();
}
if (element.Name == "name3")
{
DoSomethingElse();
FlattenXml(content, tempId);
Func3();
}
else
{
DoSomethingCompletelyDifferent();
FlattenXml(element, id);
}
}
xml.Elements("name3").Remove();
}
あなたは、 "polimorphism"を置き換えることによって何を意味するのかを明確にすることはできますか? – Evk
https://refactoring.guru/replace-conditional-with-polymorphism – Limbo
このリファクタリングは実際にはあまり適していません。本当に欲しいのであれば、たくさんのクラスを作成できますが、この特定のケースではコードは改善されません。 – Evk