【发布时间】:2013-08-14 00:01:53
【问题描述】:
我创建了一个扩展方法来避免像下面的“if”这样键入代码:
Guid? nullableGuid = something;
if (!nullableGuid.HasValue || nullableGuid == Guid.Empty)
{
// do stuff
}
else
{
// do other stuff
}
我的扩展方法是:
public static bool IsNullOrEmpty(this Guid? g)
{
return !g.HasValue || g.Value == Guid.Empty;
}
这很好,因为现在我的代码看起来更干净并且更易于阅读:
Guid? nullableGuid = something;
if (nullableGuid.IsNullOrEmpty())
{
// do stuff
}
else
{
// do other stuff
}
问题是,如果我尝试在 else 块中使用 Guid,resharper 会抱怨。它没有意识到我在扩展方法中检查了 HasValue。当然,我可以使用 cmets 抑制警告或更改 resharper 选项,但这些都不是好的选择。如果我必须在任何地方评论代码,它往往会破坏首先使代码更清晰的目的。如果我更改 resharper 选项,那简直太疯狂了。
我想知道是否有更好的选择。有没有办法“告诉” resharper 它是“好的”,而不必在任何地方评论代码或禁用检查?
【问题讨论】:
-
我不明白 Resharper 是如何知道您在该扩展方法中进行空检查的。如果您确实找到了解决方案,我很想知道它是什么。
-
显示您在问题中所述的代码我没有看到
GUID在您提供的任何 else 语句中使用,请显示所有相关代码 -
@JoeBrunscheon,你可能是对的。我希望有人知道我还没有找到的功能。