我有一个抽象的基类,启动一个对所有派生类通用的timer
,
public abstract class BaseClass
{
public virtual void Start() { _timer.Start(); }
}
现在我需要为每个派生类加载不同的JSON配置文件并创建该文件。
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
类一样移动这些代码吗?或者有其他方法吗?
发布于 2018-10-08 00:55:15
我认为你可以将你的代码简化为:
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");
}
}
https://stackoverflow.com/questions/52690729
复制相似问题