C#inherit(kind off)/在单个类中使用多个类的属性

Omu*_*Omu 4 c#

假设我有2个这样的类:

public class A
{
    public string P1{ get; set; }
    public string P2{ get; set; }
}

public class B
{
    public string P3{ get; set; }
    public string P4{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要一个这样的课:

public class C
{
    public string P1{ get; set; }
    public string P2{ get; set; }
    public string P3{ get; set; }
    public string P4{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

C类可以使用A类和B类而不是重新声明所有属性吗?
(我需要这个DTO)

Arv*_*rve 7

不,C#不支持多重继承.它可以使用A或B,也可以不使用两者.

这是可行的,但可能不漂亮:

public class C
Run Code Online (Sandbox Code Playgroud)

{

public A APart { get; set; }

public B BPart { get; set; }

}


ser*_*hio 6

您不能,因为多重继承仅适用于 C# 中的接口。

黑客

一世:

public class C : { public A; public B; }
Run Code Online (Sandbox Code Playgroud)

二:

public interface IA { string P1, P2; }    
public interface IB { string P3, P4; }

public class C : IA, IB { string P1, P2, P3, P4; }
Run Code Online (Sandbox Code Playgroud)

三:

public class A { public string P1, P2; }
public class B : A { public string P3, P4; }

public class C : B {}
Run Code Online (Sandbox Code Playgroud)

至于 DTO,也许这些链接12可能有用:

如果没有,您可以使用反射动态构建您的类。

建立动态的C含有的所有公共属性的类AB