创建EventHandler方法时,如何修复Sonarint规则S1172“应删除未使用的方法参数”。
public void Subscribe()
{
MyEvent += OnMyEvent;
}
public void UnSubscribe()
{
MyEvent -= OnMyEvent;
}
private void OnMyEvent(object sender, EventArgs e)
{
DoSomething();
}
您可以使用反应式扩展重写代码,并创建“可观察的”,但对于简单的事件处理程序来说,这是一个相当复杂的解决方案。另一种选择是重写代码,如下所示:
public void Subscribe()
{
MyEvent += (s,e) => DoSomething();
}
但接下来的问题是如何执行取消订阅()
?在我看来,未使用的参数不适用于事件处理程序方法。但在声纳探测中可能很难做到这一点。
如果您需要取消订阅,您需要存储委托(删除静态以获得正确的代码,这是从被黑客攻击的控制台应用程序项目中粘贴的):
public static event EventHandler TestEvent;
private static EventHandler saved = (s, e) => DoSomething();
static void Main(string[] args)
{
TestEvent += saved;
TestEvent -= saved;
}
internal static void DoSomething()
{
}
或者使用大规模退订:
foreach (Delegate d in TestEvent.GetInvocationList())
{
TestEvent -= (EventHandler)d;
}
或者,如果您拥有该事件,您也可以使用它取消订阅所有:
TestEvent = null;
或者只是使用你一直使用的语法,创建一个非匿名方法,就像你上面展示的那样。这种语法没有错。你可以做义务工作
if (sender == null)
throw ArgumentNullException(nameof(sender));
为了摆脱警告;)
我刚刚将Intellij Idea的SonarLint插件更新为2.3.2版。Changelog表示,由于2.3版,连接模式下的规则排除应该可用。 下面是我的配置,似乎被更正了,然而,忽略的规则仍然弹出。
我遇到了一个问题: 移除这个未使用的方法参数“messageId”。 我的方法看起来像: 用于过滤器的。这不是字段。它是方法参数。 那是一个< code >声纳错误还是我忽略了什么?我们用的是声纳5.6
我想删除,同时删除中具有匹配的 目前,我有一个外键设置为on delete,更新设置为for。
我正在尝试使用Opendaylight氮气开发一个应用程序。 出于调试目的,我想删除opendaylight缓存的所有流规则(这些规则在交换机重新连接时重新安装)。我想删除这些规则并重新启动容器以检查行为。Opendaylight在哪里存储这些(在哪个文件中)? 谢啦 兰加
问题内容: 如果您有如下代码: gofmt重写规则可以将其更改为: 我试过了: 但是我得到: 我也尝试过: 但这给int而不是t带来了类似的错误 我已经阅读了gofmt文档。网络搜索没有发现任何有用的信息。 我故意使用单个字符标识符来匹配表达式。 我怀疑问题可能在于尝试匹配类型,因为它可能不被视为“表达式” 使用gofmt可以做到这一点吗? 问题答案: 不,这不可能- 因为将fmt视为模式是“表达
下面是这个问题:我被要求从哪里开始一个新问题。 问题是我对JUnit了解不够,或者对等的了解不够,无法以Jeff Bowman提到的方式解决这个问题。