我有以下结构:
public abstract class A
{
public abstract string Foo {get;set;}
}
public class B : A
{
public B() { Foo = "test" } //ReSharper: Virtual member call in constructor
[Bar(1, 2)]
public override string Foo {get;set;}
}
public class C : B
{
[Bar(2,3)]
public override string Foo {get;set}
}
如您所见,我从ReSharper收到有关在Ctor中进行虚拟成员调用的警告。所以我认为:
但是然后我遇到了问题,我需要用Bar
属性装饰属性...
我不需要重写Foo
的C
,比那实际上等; 有没有办法做到这一点?
如果您在B的构造函数中所做的全部是为Foo设置默认值,则只需使用一个具有后备字段的属性,然后在字段初始值设定项中设置默认值即可:
public class B : A
{
private string foo = "test";
[Bar(1, 2)]
public override string Foo
{
get { return foo; }
set { foo = value; }
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句