是否有可能触发类似于“过时”的条件编译器警告,但具有不同的含义?

时间:2012-07-31 11:13:36

标签: c# visual-studio-2010

我有一个只能由开发人员在特殊情况下使用的功能。

不幸的是,设置公共/私有并没有多大帮助,因为在许多情况下它需要可见。

我已经使用xmldocs记录了该函数,以便向开发人员发出警告,但是是否可以输出编译器警告?也许使用一个属性,类似于将一个函数标记为过时的?

或者,如果某人有任何有用的架构建议来引导人们远离危险的方法(我猜这可能是单独的命名空间,继承等?)


其他详细信息

谢谢你的回答,很多1 +来自我: - )

这也帮助我澄清了我的问题:

[已废弃(“我的消息”)]在某些方面对#warning更好,因为它只会在实际使用该方法时显示警告。然而正如ChrisF指出的那样,它实际上并不是一种过时的方法,因此并不准确。

[Obsolete(“我的消息”)的功能之间是否存在中间立场,但没有意义?

5 个答案:

答案 0 :(得分:3)

您可以使用#warning ...

http://msdn.microsoft.com/en-us/library/963th5x3(v=vs.100).aspx

的更多信息

答案 1 :(得分:3)

在Visual Studio中,您可以抛出这样的错误和警告。

#warning This line is a compiled warning

我不确定你是否可以有条件地做,但这会在编译时发出警告。

答案 2 :(得分:1)

使用Obsolete属性:

[Obsolete("Please don't use this")]
public void DodgyMethod()
{
}
  

任何试图调用该方法的代码都会导致编译器发出警告。

虽然从技术上讲它不是一种过时的方法,但效果是一样的。

答案 3 :(得分:1)

您应该在方法中添加[Obsolete("Don't use this outside of whatever")]

答案 4 :(得分:1)

我认为解决此问题的最佳方法是编写一个小型Roslyn Analyzer并将其与您的库一起发送。这样,您就可以生成自定义代码检查,并且还允许开发人员使用Suppress属性以适当的原因来抑制警告。

可以在此处找到示例:https://msdn.microsoft.com/magazine/dn879356.aspx