xer*_*him 3 .net c# oop resharper
我有一个抽象类:
public abstract class ExampleBase : IExampleBase
{
protected ExampleBase()
{
this.SetupData();
}
protected abstract Dictionary<int, Adress> RelevantData { get; set; }
protected abstract void SetupData();
public void ProcessData()
{
// use RelevantData
}
}
Run Code Online (Sandbox Code Playgroud)
派生类:
public class Example : ExampleBase
{
public Example()
{
}
protected override void SetupData()
{
this.RelevantData = new Dictionary<int, Adress>
{ 1, new Adress { ... } },
{ 2, new Adress { ... } }
}
}
Run Code Online (Sandbox Code Playgroud)
在基类中,ReSharper告诉我
虚构件成员调用
我知道由于执行顺序而调用该方法很危险..但是如何解决这个问题呢?
上下文:我想在每个派生类中设置数据,然后在基类中处理.我想SetupData()在基类中调用该方法,因为它在每个派生类中都是相同的.
派生类:
基类:
Pat*_*man 14
你没有.你接受这是危险的事实,并且(尽量)防止这种情况发生.这是一个设计缺陷!
例如,可以通过将调用移动到最高级别类,或者使每个类对其自己负责来阻止这种情况,从而删除方法调用的不安全部分.然后,您不需要另一个类(基类)来负责其派生类.
如果那是不可能的.使用注释或任何其他可用的方法非常清楚,开发人员在更新代码时应考虑此问题.