嗨所以我有一个接口有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类文件中实现方法?
谢谢
答案 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();
}
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
在部分类存在的任何地方都应该使用