是否可以将接口分成2个部分接口并在2个部分类中实现?

Mat*_*nes 19 c# partial-classes

我正在为我的雇主对第三方产品进行相当广泛和持续的修改.实现我的代码时的一个主要考虑因素是尽可能地将其隔离,以使来自供应商的更改集成尽可能轻松.到目前为止,实现这一目标的最有用的工具之一是部分类.使用部分类我能够保留我必须在他们自己的文件中实现的任何新方法.

但今天我打了一个打嗝,我需要解决一些问题.假设我需要扩展以下界面.

public partial interface ICondition
{
  void MethodA();
  void MethodB();
}
Run Code Online (Sandbox Code Playgroud)

通过使接口部分并添加名为ICondition.CompanyName.cs的文件

public partial interface ICondition
{
  void MethodC();
}
Run Code Online (Sandbox Code Playgroud)

现在我想要做的是落实以同样的方式接口我宣布它,与MethodA()MethodB()在部分类的一个文件来实现,而MethodC()在另一个.

public partial class Condition : ICondition
{
   public void MethodA(){ }
   public void MethodB(){ }
}
Run Code Online (Sandbox Code Playgroud)

和我的类Condition.CompanyName.cs

public partial class Condition : ICondition
{
   public void MethodC() { }
}
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,因为接口必须在同一个文件中实现.我希望有一些声明,或者我不知道的一些语法魔法,这将允许我做我想做的事情,并将这些方法保存在单独的文件中,但是相同的接口.

编辑

这确实有效,我的问题是由于愚蠢的拼写错误,我在不同的命名空间中有了我的2个部分类.我想,今天早上我开始有点太早了,感谢大家的时间和关注.

Ada*_*rth 9

在这个实例中,您不需要具有部分接口,您仍然可以将方法放在所需的位置.

这当然不起作用,因为接口必须在同一个文件中实现

我不明白你的例子是如何工作的,我只是做了以下事情:

partial interface IFoo
{
    void One();
    void Two();
}

partial class Class1 : IFoo
{
    public void Two()
    { }

    public void Three()
    { }
}
Run Code Online (Sandbox Code Playgroud)

在一个文件中.

partial interface IFoo
{
    void Three();
}

partial class Class1 : IFoo
{
    public void One()
    { }
}
Run Code Online (Sandbox Code Playgroud)

在另一个...