首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我是否可以消除以下派生类的重复代码,并转移到抽象基类

我是否可以消除以下派生类的重复代码,并转移到抽象基类
EN

Stack Overflow用户
提问于 2018-10-08 00:49:40
回答 1查看 52关注 0票数 0

我有一个抽象的基类,启动一个对所有派生类通用的timer

代码语言:javascript
复制
public abstract class BaseClass
{
    public virtual void Start() { _timer.Start(); }
}

现在我需要为每个派生类加载不同的JSON配置文件并创建该文件。

代码语言:javascript
复制
public class DerivedClass1 : BaseClass
{
    private readonly List<config> configs = new List<config>();

    public DerivedClass1()
    {
        configs = JsonSettings.GetConfigurations(@"./Configurations/1.json");
    }
    public override void Start()
    {
        base.Start();

        foreach (var configuration in configs)
        {
            JsonSettings.CreateConfigFile(configuration);
        }
    }
}

public class DerivedClass2 : BaseClass
{
    private readonly List<config> configs = new List<config>();

    public DerivedClass2()
    {
        configs = JsonSettings.GetConfigurations(@"./Configurations/2.json");
    }
    public override void Start()
    {
        base.Start();

        foreach (var configuration in configs)
        {
            JsonSettings.CreateConfigFile(configuration);
        }
    }
}

正如我所看到的,在不同的派生类中有很多代码是重复的。

我可以像移动abstract base类一样移动这些代码吗?或者有其他方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-08 00:55:15

我认为你可以将你的代码简化为:

代码语言:javascript
复制
public abstract class BaseClass
{
    protected virtual List<config> configs { get; set; } = new List<config>();
    public virtual void Start()
    {
        _timer.Start();
        foreach (var configuration in configs)
        {
            JsonSettings.CreateConfigFile(configuration);
        }
    }
}

public class DerivedClass1 : BaseClass
{
    public DerivedClass1()
    {
        configs = JsonSettings.GetConfigurations(@"./Configurations/1.json");
    }
}

public class DerivedClass2 : BaseClass
{
    public DerivedClass2()
    {
        configs = JsonSettings.GetConfigurations(@"./Configurations/2.json");
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52690729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档