微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 向接口添加新功能

我需要为现有接口上的函数创建重载,而不会影响当前实现或使用接口(理想情况下)的任何组件.

我想我有几个选择:


原始界面:

public interface IServerComponent
{
    bool Add(int a,int b);
}

我可以将新的重载函数添加到接口,并强制实现接口的每个类来实现新的函数.

public interface IServerComponent
{
    bool Add(int a,int b);
    bool Add(int a,int b,int c);
}

或者我可以创建一个实现原始界面的新界面.然后使用原来的其他类不需要改变,任何新的类可以实现新的接口…

public interface IServerComponent2 : IServerComponent
{
    bool Add(int a,int c);
}

这种情况最好的做法是什么?还有其他选项可用吗?

谢谢

解决方法

如果新方法可以用旧方法表示,可以使用扩展方法
// Original interface
public interface IServerComponent 
{ 
  bool Add(int a,int c); 
} 

// New overload
public static class MyServerMethods
{
  public static bool Add(this IServerComponent component,int a,int b)
  {
    return component.Add(a,b,0);
  }
}

如果方法不能像这样表达(即它们真的需要由组件本身实现),那么我建议定义一个新的界面.这种方法具有最大的向后兼容性.

原文地址:https://www.jb51.cc/csharp/93160.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐