用于继承的受保护变量(StyleCop SA1401)

时间:2012-07-26 14:39:17

标签: c# inheritance properties stylecop

所以我通过StyleCop规则修复了所有代码,而我正在经历的很多代码是SA1401 FieldsMustBePrivate。我理解它,我们一直很擅长实现它。 。 。有点。我们一直做的一件事就是让我们的变量受到保护并提供属性。这样,从基类继承的类可以访问变量本身,但是继承链之外的类必须通过属性访问这些值。

我发现这在基类需要在继承类中设置变量值而不在属性上提供setter以便继承链之外的类不能修改该值的情况下特别有用。我通过“修复”SA1401问题找到的是我正在打开要设置的属性值,因为我需要在它们的继承类中设置它们,我真的不想设置它。

我想我可以在基类上创建一个受保护的属性,允许我设置值,然后创建一个不允许我设置值的“新”公共属性,但是我必须创建“每个继承班级的新“公共财产。”

思想?

1 个答案:

答案 0 :(得分:5)

你不能同时做两件事:

public SomeType SomeProperty { get; protected set; }

该属性可以公开获取,但只能由类及其子类设置。