在C#中,有没有办法在实例成员中强制使用"this/base"资格?

Bru*_*ton 4 c# stylecop this

有时,在引用同一类(或基类)的其他实例成员的实例成员中读取代码可能会令人困惑:

public void MyMethod()
{
    Where = did + AllTheseWeirdThings(GetDeclared()); // ?
}
Run Code Online (Sandbox Code Playgroud)

具有类似"使用"_"前缀所有私有/受保护成员的编码标准"没有帮助,因为实例成员仍然可以引用公共成员.

读这个会好得多:

public void MyMethod()
{
    this.Where = this.did + base.AllTheseWeirdThings(this.GetDeclared()); // ?
}
Run Code Online (Sandbox Code Playgroud)

有没有办法强制执行此操作,无论是使用编译器选项,StyleCop还是类似的东西?

Tim*_*son 6

没有强制执行规则的编译器选项.

然而,粗略的谷歌搜索提出了这个StyleCop规则:http://www.thewayithink.co.uk/stylecop/sa1101.htm

ReSharper也有类似的选择.