我希望能够使C#API保持现在的状态,但是只需在方法调用中弃用其中一个参数即可。是否可以这样做,还是我需要创建一个不带参数的新方法并将原始方法标记为“过时”?
最佳答案
您将需要使用新的签名创建一个新的nethod,并将当前的标记为过时。
您想不惜一切代价避免的是代码中断!然后,特别是在公司框架中,您想宣传例如将不再支持您的方法,但是您不想由于体系结构或设计决策或您的一方而对崩溃的依赖解决方案负责,对吗?
ObsoleteAttribute
类将为您解决问题。
一旦类(class)成员标记为过时,将在客户端,使用您的框架的人员,继续使用该方法的人员甚至在同一项目下的您的一位同事发出警告。
public class MyClass {
[Obsolete("This method should no longer be used, please use MyNewMethod() instead.")]
public void MyMethod(string name, long phoneNumber, long faxNumber) {
}
public void MyNewMethod(string name, long phoneNumber, long faxNumber, string email) {
}
}
这将通告整个代码用户不再支持
MyMethod
。在一定的时间(合理到足以允许每个人更改他/她的代码)之后,当您的过时方法仍在代码中使用时,您可以告诉此属性抛出错误消息。
public class MyClass {
[Obsolete("This method should no longer be used, please use MyNewMethod() instead.", true)]
public void MyMethod(string name, long phoneNumber, long faxNumber) {
}
public void MyNewMethod(string name, long phoneNumber, long faxNumber, string email) {
}
}
通过将第二个
ObsoleteAttribute
类构造函数参数设置为true
,可以给编译器打电话以宣告使用此方法作为错误。仅过了一段时间,您就可以将代码中的方法完全删除,以对其进行一些清理。这是敏捷软件开发方法论所鼓励的重构方法的一部分。
这有帮助吗?