我有以下结构:
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
,除此之外;有没有办法实现这个目标?
答案 0 :(得分:1)
如果您在B的构造函数中所做的只是为Foo设置默认值,只需使用带有支持字段的属性并在字段初始值设定项中设置默认值:
public class B : A
{
private string foo = "test";
[Bar(1, 2)]
public override string Foo
{
get { return foo; }
set { foo = value; }
}
}