2

所以我正在通过 StyleCop 规则修复我们所有的代码,我经常遇到的一个是 SA1401 FieldsMustBePrivate。我理解它,我们非常擅长实施它。. . 有点。我们一直在做的一件事是让我们的变量受到保护并提供属性。这样从基类继承的类可以自己访问变量,但继承链之外的类必须通过属性访问这些值。

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

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

想法?

4

1 回答 1

6

你不能同时做这两个:

public SomeType SomeProperty { get; protected set; }

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

于 2012-07-26T14:42:52.857 回答