5

我的代码中有一个功能,但它将在下一个版本中可用。是否有任何标签来通知它未使用,但将来会可用。我只有一种方法,即带有自定义消息的 [过时]。期待除此之外。在此先感谢。

4

4 回答 4

6

如果它在当前版本中不可用,请不要将其作为公共 API 的一部分。不要暴露你图书馆的消费者不应该使用的东西。

即使它不是库,也不要添加你还不需要的代码。这违反了YAGNI原则。仅在实际需要时添加代码。

于 2013-07-05T11:37:32.420 回答
3

您可以从该方法创建抛出一个 CustomError 消息,说“此方法不适用于当前版本。它适用于未来”类似的东西。

否则,您可以将该方法设置为 Obselete 并在消息中指定原因。[Obsolete("这个方法我已经写好了,现在版本不要用。")]

于 2013-07-05T11:49:09.457 回答
2

从您的问题来看,我假设您想在有人尝试调用此方法时生成编译器警告,说明它尚未实现。

ObsoleteAttribute被硬编码到 C# 编译器中,作为应该生成警告消息的东西。因此,如果不修改编译器本身,就无法将方法标记为“将来实现”。

来自 C# 规范:

属性 Obsolete 用于标记不应再使用的类型和类型的成员。如果程序使用带有 Obsolete 属性的类型或成员,编译器会发出警告或错误。具体来说,如果没有提供错误参数,或者如果提供了错误参数并且值为 false,编译器会发出警告。如果指定了 error 参数并且值为 true,则编译器会发出错误。

我建议不要公开尚未实现的方法,因为使用它们没有意义。如果这是团队开发工作的一部分,在开发特定模块之前指定 API 合同,您应该考虑抛出一个NotImplementedException或提供一个虚拟实现。

于 2013-07-05T11:40:21.443 回答
1

由于Roslyn:代码分析器,现在有了一个真正的解决方案,重新提出了这个问题。

只需将此 Nuget 包添加到您的项目中,您就可以创建将被编译器拾取的属性!

GitHub repo 自述文件有说明,非常简单。

于 2018-08-11T05:12:44.433 回答