C# 该领域<;fieldName>;已指定,但从未使用其值
我正在编写以下形式的Web Api类:C# 该领域<;fieldName>;已指定,但从未使用其值,c#,.net,warnings,C#,.net,Warnings,我正在编写以下形式的Web Api类: public class PartController : ApiController { private ILogService _logService; private IPartSerive _partService; private const string className = "My.Long.Full.ClassPath.PartController"; ... [HttpGet] pub
public class PartController : ApiController
{
private ILogService _logService;
private IPartSerive _partService;
private const string className = "My.Long.Full.ClassPath.PartController";
...
[HttpGet]
public Part GetPart(int partId)
{
_logService.Log(className, DateTime.Now, etc...);
return _partService.GetPart(partId);
}
}
为了保持代码可读性和代码行短,我定义了一个传递给日志服务的常量字符串值
但是,我收到了编译器警告:
字段“PartController.className”已分配,但从未使用过其值
显然,我在这里使用的是这个值。奇怪的是,在我的MVC课程中,我没有看到警告
#pragma warning disable 0169, 414, 0219 // I forgot which one it is.
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169, 414, 0219
有人能为这种情况推荐一种最佳做法吗?或者一种抑制这些警告的方法吗?要抑制警告,请在
className
的声明周围添加此选项。如果该警告不是正确的,则有一系列警告要禁止显示。警告编号也应位于输出窗口中警告旁边
#pragma warning disable 0169, 414, 0219 // I forgot which one it is.
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169, 414, 0219
我想你也可以通过将它公开来避开它,但我不确定。有几种方法可以抑制警告 首先,正如Jimenemex所强调的,有
#pragma warning disable 0169
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169
还有一种方法,由于性能原因,不建议在发布代码中使用这种方法
[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]
您还可以创建一个cs文件来保存抑制属性,然后使用属性属性将抑制作为目标
[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")]
好的,找到了解决办法。出于某种原因,这是一个VisualStudio错误。可以通过重新启动Visual Studio来修复此问题。BuildController在哪里?您发布的示例显示类名为PartController。编译器警告是指
BuildController
,而不是PartController
-您确定您只是查找了错误的文件,并且在BuildController
中确实没有使用它吗?(我不能用const
复制此警告,即使它未被使用-删除const
部分会发出警告。)抱歉,复制/pase的伪影。示例是PartController。我已经更新了代码。