3

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

不幸的是,设置 public / private 并没有真正帮助,因为它需要在许多情况下可见才能使用。

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

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


附加细节

谢谢大家的回答,我有很多1+的:-)

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

[Obsolete("my message")] 在某些方面比#warning 更好,因为它只会在实际使用该方法时显示警告。然而,正如 ChrisF 指出的那样,它实际上并不是一种过时的方法,因此并不准确。

[Obsolete("my message")] 的功能之间是否存在中间立场但没有意义?

4

5 回答 5

3

您可以使用#warning ...

更多信息请访问http://msdn.microsoft.com/en-us/library/963th5x3(v=vs.100).aspx

于 2012-07-31T11:16:17.013 回答
3

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

#warning This line is a compiled warning

我不确定您是否可以有条件地执行此操作,但这会在编译时引发警告。

于 2012-07-31T11:16:31.480 回答
1

使用过时属性:

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

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

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

于 2012-07-31T11:16:53.873 回答
1

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

于 2012-07-31T11:16:59.100 回答
1

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

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

于 2018-03-08T17:08:51.537 回答