如何在c#中实现组合

时间:2015-02-17 14:30:18

标签: c#

我有两个A和B类,其中有两个属性' prop1'和' prop2'是常见的。我怎样才能实现构图。可能是C类可以具有这些共同属性。它是一种关系而不是一种关系。

public class A {
 public int Prop1{get;set;}
 public int Prop2 {get; set;}
 public int Prop3{get;set;}
 public int Prop4 {get; set;}

}

public class B {
 public int Prop1{get;set;}
 public int Prop2 {get; set;}
 public int Prop5{get;set;}
 public int Prop6 {get; set;}
}

如果我有一个界面说C并且在其中有这两个常见属性会将其归类为组合吗?像

这样的东西
inferace C {
 int Prop1{get;set;}
 int Prop2 {get; set;}
}

public class A : C
{

}

public class B : C
{
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

实现接口不是组合,尽管这是避免重复代码的另一种方法。

要使用合成执行此操作,您应该使用Prop1和Prop2创建一个新类,并将此类的实例作为ClassA和ClassB的属性。

public class CompositeKey 
{
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }
}  

public class A 
{
    public CompositeKey Key { get; set; }
    public int Prop3 { get; set; }
    public int Prop4 { get; set; }
}
...

这比使用接口更灵活,因为您可以在运行时将任何子类型的CompositeKey分配给您的属性,但是您应该这样做的主要原因是因为类A 具有复合键,您不希望将您的类用作复合键。