我需要更改多个应用使用的界面。只有我正在处理的这个应用程序才需要进行更改。我需要在方法中添加一些参数。
我有权更改其他应用中的代码,只需几分钟即可更改其他应用以使用正确的方法签名。然后,我可以使这些应用程序无法使用这些额外的参数。
或者我可以创建一个重载并让其他应用程序实现这些方法,我猜不会做任何事情。或者让他们在没有额外参数的情况下调用原始方法。
这里最好的做法是什么,朋友?
答案 0 :(得分:4)
您可以添加实现旧接口的新接口(即INewInterface)(即IOldInterface)。然后,然后将INewInterface实现到类/ struct。
public interface IOldInterface {
object DoSomething( int number );
}
...
public interface INewInterface : IOldInterface {
object DoSomething( int number, TimeSpan time );
}
...
public class MyClass : IOldInterface, INewInterface {
public object DoSomething( int number ) { ... }
public object DoSomething( int number, TimeSpan time ) { ... }
}
答案 1 :(得分:3)
我会尽量避免创建那些与所有合理实现并不“真正”适合的方法。有两种选择:
目前还不完全清楚是什么实现了界面或者我正在使用它的是什么,所以提出非常具体的建议有点困难。
答案 2 :(得分:1)
如果您控制所有代码,那么修改界面可能是合理且简单的。
但是,这种变化可能会引入额外的成本,而不仅仅是初始编码时间。
有时另一种方法是引入一个扩展第一个接口的新接口,仅用于新代码,以避免在其他地方引入额外的成本和风险。