簡體   English   中英

局部類擴展多方法類

[英]Partial class extending multiple method class

嗨,我有一個接口,其中包含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的錯誤,怎么來? 如果我將B()添加到Partial1.cs中,那么我將擁有

// 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(){}
}

最初,我只想使用Interface,但是我遇到了同樣的錯誤“ Partial class無法正確實現Interface”,所以我雖然可能無法這樣做。

有什么辦法可以做我在這里嘗試的嗎? 在我想要的部分類文件中實現方法?

謝謝

簡短答案:

這取決於您的編譯器/ IDE。
例如,在某些版本的Visual Studio中,您可能無法分解多個子類之間的接口。


你能行的。

在LINQPad和VS2017中,這可以正常編譯...

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();
}

考慮使用替代設計

部分類的另一種可行的用例是將您的類分解為不同的多個接口。 例如:

介面

public inteface I1
{
    void A();
}

public inteface I2
{
    void B();
}

用接口分解1-1類

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

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

最終將編譯為

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

找到了為什么它不起作用的原因。

程序集abc中定義的部分類與程序集ab中定義的部分類不同

因此,我不在乎查看程序集信息,以便我的部分類能夠按我希望的方式工作,因此我必須將它們添加到同一程序集中。

天哪!

例如:

namespace A.BL.Repository.ARepo 

應該在存在局部類的任何地方使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM