我的代码中有一项功能,但可以从下一版本获得。是否有任何标签通知它未被使用,但将来可用。我只有一种方式,即[已过时]自定义消息。期待除此之外。谢谢。
答案 0 :(得分:6)
如果在当前版本中不可用,请不要将其作为公共API的一部分。不要暴露图书馆消费者不应使用的东西。
即使它不是库,也不要添加您不需要的代码。这违反了YAGNI原则。仅在实际需要时添加代码。
答案 1 :(得分:3)
你可以创建一个从该方法抛出一条CustomError消息,说“这个方法不适用于当前版本。它是为了将来”这样的东西。
否则您可以将方法设为Obselete并在消息中指定原因。 [已废弃(“我已编写此方法以供将来使用。请勿在当前版本中使用它。”)]
答案 2 :(得分:2)
从您的问题判断,我假设您想要在有人试图调用此方法时生成编译器警告,并声明它尚未实现。
ObsoleteAttribute
被硬编码到C#编译器中,作为应生成警告消息的内容。因此,如果不修改编译器本身,就无法将方法标记为“将来实现”。
来自C#规范:
属性Obsolete用于标记类型和类型的成员 不应再使用了。 如果程序使用使用Obsolete属性修饰的类型或成员,则编译器会发出警告或错误。 具体来说,如果没有错误参数,编译器会发出警告 提供,或者如果提供了错误参数并且具有该值 假。如果error参数是,编译器会发出错误 指定并且值为true。
我建议不要公开尚未实现的方法,因为使用它们没有任何意义。如果这是团队开发工作的一部分,在开发特定模块之前指定API合同,则应考虑抛出NotImplementedException
或提供虚拟实现。
答案 3 :(得分:0)
由于Roslyn:代码分析器,现在有了一个真正的解决方案,从而使这个问题得以重现。
只需将this Nuget package添加到您的项目中,您就可以创建将由编译器选择的属性!
GitHub repo readme带有说明,而且非常简单。