小编Lim*_*mbo的帖子

用多态性替换条件

我想将以下递归函数中的if语句替换为polimorphism。

我看了很多,看了一些youtube视频,但仍然看不到在我的代码中实际执行此操作的方式(为方便起见,本文对此进行了简化)

对我而言,使此任务更困难的是函数开始和递归调用时是否存在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();
}
Run Code Online (Sandbox Code Playgroud)

c# refactoring design-patterns

3
推荐指数
1
解决办法
1691
查看次数

标签 统计

c# ×1

design-patterns ×1

refactoring ×1