Dyp*_*ppl 19 c# oop interface c#-3.0
我今天的问题:界面中的重载方法是不是很糟糕?你知道,"省略参数,如果你不在乎,我们将找出默认值"的重载方法.像那样:
void Add(object item);
void Add(object item, bool shouldDoSomething);
void Add(object item, bool shouldDoSomething, IUltraObscureDeviceContext context);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我倾向于认为只有后者属于一个接口而其他应该在它之上的抽象类中实现.但话说回来,我不确定.
此外,有些时候你只是想要不同的重载做一些稍微不同的工作(如果重载的方法永远不应该用于此,请立即停止我).或者有时你不能只用空格代替某些参数,你想要在某些东西为空时抛出异常.在这种情况下我不应该使用重载吗?
所以基本上我正在寻找关于接口中重载方法的一些指导与实现这些接口的抽象类中的重载方法等等.提前致谢
如果默认值取决于方法调用的接收方,请将它们声明为接口方法.
如果默认值只是默认值而与接收者无关,则创建各种reduce-argument-list重载作为扩展方法,并使实现者不必担心必须自己提供所有重载.
如果您正在处理某些非常严格的80/20规则异常,其中与实现无关的默认值几乎但并不总是足够,那么您有几个选项,其中没有一个是好的:
as将this参数转换为新接口类型,如果匹配,则在那里调用,否则填写库存默认值.非常时髦,依赖于动态转换,因此在内部循环中没有那么好,但它将实现者和调用者的默认值分离,而不会牺牲不能采用"默认默认值"的实现者的灵活性.| 归档时间: |
|
| 查看次数: |
14472 次 |
| 最近记录: |