How to mark a class as Deprecated?
Possible Duplicate:
How do I mark a method as Obsolete/Deprecated? - C#
如何将类标记为已弃用?我不想在我的项目中再使用类,但不想在2周之前删除它。
- 把前面的问题标记为副本不是很糟糕吗?
- 我们应该将第一个问题标记为已过时/已弃用。现在的问题是:如何将问题标记为已弃用?
您需要使用属性[Obsolete]。
这是一个例子:
1 2 3 4 5
| [Obsolete("Not used any more", true)]
public class MyDeprecatedClass
{
//...
} |
您没有使用参数,它们是可选的(重载方法)。第一个参数是有原因的,最后一个参数是在编译时标记错误而不是警告。
- 这里的[Obsolete("Not used anymore",true)]有两个主要缺陷:1。如果代码不再使用,则应删除2。解释并没有提供使用/做什么的信息。
- @tymtam是对的,但是您可能想给开发人员一些时间,在将代码移植到新的实现中之前,先将它们拖到脚下。对于1-2版本,通常将组件标记为已过时。
- 一个用例是:对于"1或2版本",将其保留为默认值(false),并在注释中提到。然后在适当的时候将其更改为true,这样那些仍在使用它的人现在将在代码中得到错误并被迫更改。那么……[Obsolete("Method was deprecated December 12, 2018. Use xyz instead.", true)]。这样就清楚了。然后在另一个日期,你完全删除它。
根据doak的答案,但如果您希望编译代码,则应将属性的第二个参数设置为false:
1 2 3 4 5
| [Obsolete("Not used any more", false)]
public class MyDeprecatedClass
{
//...
} |
这只会引发警告。
- 您也可以完全不使用该属性(默认值为false):[Obsolete("Not used anymore")];我个人认为,在末尾没有布尔值的情况下,这个属性更可读。
不删除类和不推荐使用的原因是,当代码是已建立的API,然后被第三方使用时,要遵守一些"礼貌策略"。
如果您拒绝使用而不是删除,那么您将为消费者提供一个生命周期策略(例如,在X.X版本之前维护和存在类),以允许他们计划正确地迁移到新的API。
如果您使用的是版本控制,我建议您只删除该类。没有理由有未使用的代码。
如果您稍后决定想要这个类,版本控制将是一个方便的撤销。
- 我猜想/假设他想把它标记为已弃用,以便在代码库中删除对它的所有引用的同时仍能编译代码。
- 我同意,为什么不删除这个类,或者如果你没有版本控制,请评论它?
- 我想这是不使用我的解决方案的一个重要原因。
- 我需要不断进步。我现在不能从项目中删除它。稍后很难找到注释类或方法…我不想忘记它。我认为,贬低一种方法仍然存在。
- 这是有道理的。不过,我最终还是会把这门课除掉。
- 是的,这是我的计划…在2周内阅读问题:p:p
- (我没有投你反对票)
- 投反对票是生活的一部分。我对它没有恶意。(但谢谢)
- 如果您正在开发一个公共API,那么您没有删除过时方法或类的选项。您经常需要为客户提供几个版本,以消除他们对您的代码的依赖性。
- 我想我不是在想大局
- 如果你有一个很大的项目,你不能只删除一个正在使用的类。您必须按照预算和时间的要求缓慢地迁移代码。将一个类标记为过时将鼓励向替换类的任何新发展。因此,删除并不总是有用的。使用[obsolete("请开始使用referenceListBusinessService",false)),以便引发警告而不是错误。
- @朱托,这是一个很好的观点。