[英]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();
}
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.