加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 我怎么能让Resharper或Intellisense知道一个方法allwayse

发布时间:2020-12-15 23:45:10 所属栏目:百科 来源:网络整理
导读:我有一个抛出异常的方法: public void MyMethod(){ // do some logging throw new Exception("My Text");} 我在我的代码中超过100个地方使用此方法,问题是当我在另一个必须返回值的方法中使用此方法时重新锐化剂量不能理解不需要返回值,例如: public int A
我有一个抛出异常的方法:

public void MyMethod()
{
    // do some logging
    throw new Exception("My Text");
}

我在我的代码中超过100个地方使用此方法,问题是当我在另一个必须返回值的方法中使用此方法时重新锐化剂量不能理解不需要返回值,例如:

public int AnotherMethod()
{
    // some stuff
    MyMethod(); // <= it always throws exception

    return 0; // i have to put this code,while it never executes
}

有没有办法告诉Re-sharper MyMethod是一个例外,就像这样:

public int AnotherMethod()
{
    // some stuff
    throw new Exception(); // <= it always throws exception        
    //return 0; <= this line is no more needed
}

解决方法

这里有两个问题.

首先,您可以提供ReSharper提示进行代码分析,我将向您展示如何进行下面的操作.

然而,这里的问题不是ReSharper,而是编译器.这些提示不会说服编译器.你展示的方法:

public int AnotherMethod()
{
    // some stuff
    MyMethod(); // <= it always throws exception

    return 0; // i have to put this code,while it never executes
}

即使你说服ReSharper理解MyMethod总是抛出异常,也必须这样写.这与ReSharper无关,这只是C#编译器.

为了告诉ReSharper您的方法以某种方式运行,您可以使用属性标记它.您需要将这些属性的源代码副本复制到项目中,或引用ReSharper注释程序集.完成后,您可以像这样标记MyMethod:

[ContractAnnotation("=> halt")]
public void MyMethod()
...

然而,再次,C#编译器将不关心这一点,并仍然会抱怨丢失的返回.

您可以阅读有关ReSharper了解here: ReSharper Code Annotations Attributes的各种属性的更多信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读