【发布时间】:2018-10-08 01:21:02
【问题描述】:
我有一个抽象基类,开始一个所有派生类共有的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 类还是有其他方法?
【问题讨论】:
-
您的
BaseClass和派生类代表什么?它们的作用是什么? -
最佳实践是拥有一个单独的实用程序类实现,其中将包含这些重复的代码。并通过依赖注入将该类注入到您的新类中。 “偏好组合优于继承”
-
我没有放完整的代码,但是缺少什么?
-
@Naruto,你能举个例子吗?
-
当然!给我一分钟!
标签: c# inheritance