C# 在Masstransit中使用继承

C# 在Masstransit中使用继承,c#,inheritance,serialization,masstransit,request-response,C#,Inheritance,Serialization,Masstransit,Request Response,我们可以说,我的结构如下: public class Parent { public string Id; } public class FirstChild:Parent { public string FirstName; } public class SecondChild:Parent { public string LastName; } 我有两个通过请求/响应消息传递方法联系的服务 我的第一个服务发送一条消息,并期望FirstChild或SecondCh

我们可以说,我的结构如下:

public class Parent
{
    public string Id;
}

public class FirstChild:Parent
{
    public string FirstName;
}

public class SecondChild:Parent
{
    public string LastName;
}
我有两个通过请求/响应消息传递方法联系的服务

我的第一个服务发送一条消息,并期望FirstChild或SecondChild作为响应,因此我所做的是:

var client = bus.CreateRequestClient<CommandType, Parent>(serviceAddress, TimeSpan.FromSeconds(50));
var response = await client.Request(command);
var client=bus.CreateRequestClient(serviceAddress,TimeSpan.FromSeconds(50));
var response=wait client.Request(命令);
问题在于,响应是从包含Id和FirstName/LastName的第二个服务发送的,但由仅包含Id的第一个服务接收


如何重写此问题?

编写类而不是继承类

总的来说,组合优于继承

在大多数情况下,它将导致更灵活、更易于维护的代码

因此,与其继承父对象,不如像这样使用它进行组合:

public class FirstChild
{
   Parent parent {get; set;}
   string firstName {get; set;}
}
通过这种方式,您可以声明FirstChild“有一个”父母,而不是FirstChild“是一个”父母

我相信这就是你的问题所在

正确地警告不要在消息中使用继承。不要将消息设计与OO设计混为一谈。消息是唯一没有行为的状态