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

时间:2011-08-19 13:39:12

标签: c# partial-classes

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

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

public partial interface ICondition
{
  void MethodA();
  void MethodB();
}

使接口成为局部接口并添加名为ICondition.CompanyName.cs

的文件
public partial interface ICondition
{
  void MethodC();
}

现在我要做的是按照我声明的方式实现界面,MethodA()MethodB()在部分类的一个文件中实现,MethodC() in另一个。

public partial class Condition : ICondition
{
   public void MethodA(){ }
   public void MethodB(){ }
}

和我的类Condition.CompanyName.cs

public partial class Condition : ICondition
{
   public void MethodC() { }
}

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

修改

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

2 个答案:

答案 0 :(得分:9)

在这个实例中你不需要有部分接口,你仍然可以把方法放在你想要的地方。

  

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

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

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

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

    public void Three()
    { }
}

在一个文件中。

partial interface IFoo
{
    void Three();
}

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

在另一个......

答案 1 :(得分:3)

也许你的部分类不在同一个程序集中?

否则,你的例子应该可以正常工作......

相关问题