Я использую MassTransit в своем проекте и пытаюсь отправить команду с внутренним свойством интерфейса.Я установил для свойства Document в команде ICreateDocumentCommand значение InventoryList .Отправляет без проблем.Но когда я получаю его, я получаю GreenPipes.DynamicInternal.Common.Models.IDocument на принимающей стороне.
И этот IDocument содержит только свойства типа Document, он не имеет свойств из класса InventoryList. В основном я передаю только Id, AuthorId и DateCreated без WarehouseId и всехостальные свойства из InventoryList.
Все мои классы действительно находятся внутри Common.Models, но я бы предпочел получить Common.Models.InventoryList вместо IDocument.
Вот так я отправляю команду:
await endPoint.Send<ICreateDocumentCommand>(new
{
CorrelationId = //from outside
SocketId = //from outside
UserName = //from outside
UserId = //from outside
Document = //from outside (InventoryList)
});
Вот определение команды:
public interface ICommand
{
Guid CorrelationId { get; set; }
Guid SocketId { get; set; }
string UserName { get; set; }
Guid UserId { get; set; }
}
public class Command : ICommand
{
public Command() {}
public Guid CorrelationId { get; set; }
public Guid SocketId { get; set; }
public string UserName { get; set; }
public Guid UserId { get; set; }
}
public interface ICreateDocumentCommand : ICommand
{
IDocument Document { get; set; }
}
public class CreateDocumentCommand : Command, ICreateDocumentCommand
{
public CreateDocumentCommand() {}
public IDocument Document { get; set; }
}
Это была команда, теперь IDocument:
public interface IDocument
{
Guid Id { get; set; }
Guid AuthorId { get; set; }
DateTime DateCreated { get; set; }
}
public class Document : IDocument
{
public Document() {}
public Guid Id { get; set; }
public Guid AuthorId { get; set; }
public DateTime DateCreated { get; set; } = DateTime.Now;
}
Наконец, список инвентаризации:
public class InventoryList : Document
{
public InventoryList() {}
public Guid WarehouseId { get; set; }
public string Copmany { get; set; }
public Guid ResponsiblePersonId { get; set; }
public Guid FirstCommissionMemberId { get; set; }
public Guid SecondCommissionMemberId { get; set; }
}