Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为C#Contract类创建重新精简命名样式_C#_Resharper_Code Contracts - Fatal编程技术网

为C#Contract类创建重新精简命名样式

为C#Contract类创建重新精简命名样式,c#,resharper,code-contracts,C#,Resharper,Code Contracts,使用Microsoft的代码契约在接口上编写代码契约时,会创建一个包含所有契约的抽象契约类: 使用System.Diagnostics.Contracts; [合同类别(类型(ICollectionContract))] 公共接口ICollection{ //接口方法 } [ContractClassFor(typeof(ICollection))] 抽象类ICollectionContract:ICollection{ //接口合同 } Microsoft约定将合同类命名为与接口相同的名称,

使用Microsoft的代码契约在接口上编写代码契约时,会创建一个包含所有契约的抽象契约类:

使用System.Diagnostics.Contracts;
[合同类别(类型(ICollectionContract))]
公共接口ICollection{
//接口方法
}
[ContractClassFor(typeof(ICollection))]
抽象类ICollectionContract:ICollection{
//接口合同
}
Microsoft约定将合同类命名为与接口相同的名称,但后缀为
contract
,例如
ICollectionContract
。 然而,Resharper并不喜欢命名,部分原因是抽象类的前缀是
I


有没有一种方法可以创建一种命名样式,告诉Resharper契约类(那些用
ContractClassFor
注释的)必须与接口具有相同的名称,但后缀为
contract

这不是您可以配置Resharper立即执行的操作,您必须创建一个自定义插件

您必须创建一个
元素ProblemAnalyzer
,然后检查它是否包含
[ContractClass]
属性,然后确保它具有正确的名称。您还可以创建一个快速修复建议来重命名接口

一个好的开始类似于-它有一个很好的实现,可以分析异步方法中缺少的
async
后缀,并提供添加后缀的功能。看看这个实现,看看你自己插件的想法