部分类扩展多个方法类

时间:2017-05-27 08:28:32

标签: c# .net

嗨所以我有一个接口有2个方法,它们由一个抽象类实现,一个部分类在2个单独的文件中扩展抽象类

例如:

public inteface Iterface
{
    void A();
    void B();
}

public abstract class Abstract : Interface
{
    public abstract A();
    public abstract B();
}


// Partial1.cs    
public partial class Partial : Abstract
{
    public override A(){}
}

// Partial2.cs
public partial class Partial : Abstract
{
    public override B(){}
}

我得到Partial没有正确实现Abstract的错误,为什么会这样? 如果我要添加到Partial1.cs B() 所以我会

// Partial1.cs
public partial class Partial : Abstract
{
     public override A(){}
     public override B(){}
}

一切都很好,但为什么我不允许在包含我想要的Partial的任何文件中实现Abstract方法?

我也试过以下

// Partial1.cs    
public partial class Partial : Abstract
{
     public override A(){}
}

// Partial2.cs
public partial class Partial
{
    public override B(){}
}

最初我只想使用接口,但我有同样的错误" Partial class没有正确实现接口"所以我可能不会这样做。

有没有办法做我在这里尝试的事情?在我想要的任何Partial类文件中实现方法?

谢谢

2 个答案:

答案 0 :(得分:3)

  

简答:

     

这取决于您的编译器/ IDE。
  例如,在某些版本的Visual Studio中,您可能无法在多个分部类之间拆分接口。

你可以做到。

在LINQPad和VS2017中,这将编译得很好......

sourceCompatibility = 1.6
targetCompatibility = 1.6

考虑使用替代设计

部分类的替代和可行的用例是针对不同的多个接口分解您的类。例如:

接口

public interface I1
{
    void A();
    void B();
}

partial class Foo : I1
{
    public void A() {}
}

partial class Foo : I1
{
    public void B() {}
}

void Main()
{
    Foo foo = new Foo();
    foo.A();
    foo.B();
}

使用Interfaces

分解1-1级
public inteface I1
{
    void A();
}

public inteface I2
{
    void B();
}

最终会编译到

public partial class Partial : I1
{
    public void A() { }
}

public partial class Partial : I2
{
    public void B() { } 
}

答案 1 :(得分:0)

找到它没有奏效的原因。

程序集a.b.c中定义的部分类与程序集a.b

中定义的不同

所以我不在乎查看汇编信息,为了让我的部分班级按照我想要的方式工作,我必须将它们添加到同一个组件中。

D'哦!

EX:

namespace A.BL.Repository.ARepo 
在部分类存在的任何地方都应该使用