虚拟成员在抽象类中的构造函数中调用

时间:2014-03-03 15:01:58

标签: c#

我收到了来自ReSharper的警告消息“{1}}上的”构建者中的虚拟成员调用“:

Classification = new T();

我该如何解决这个问题呢?也许是重新设计这个结构的想法?

我想要实现的是在Dog类中创建相同的类类型,它包含通过Creature类声明的Classification。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是这个调用在构造函数中是对setter的虚拟调用:

Classification = new T();

您可以改为添加字段支持的属性,这样可以避免此问题:

protected Creature()
{
  _classification = new T();
}

private T _classification;

public virtual T Classification
{
  get { return _classification; }
  protected set { _classification = value; }
}

这似乎是一个奇怪的设计,但如果没有您想要实现的更多细节,我无法提供任何具体的设计建议。狗/分类示例对于具体建议来说过于笼统。上述更改将解决您当前的问题。