我有一个消息类,该消息类将具有要使用泛型定义的有效载荷
IMessage.cs
public interface IMessage
{
/// <summary>
/// Flags
/// </summary>
MessageFlag Flags { get; set; }
/// <summary>
/// Command
/// </summary>
MessageCommand Command { get; set; }
}
ICarryPayload.cs
public interface ICarryPayload<out TPayload>
{
TPayload Payload { get; }
}
IMessageOfPayload.cs
public interface IMessage<out TPayload> : IMessage, ICarryPayload<TPayload>
{
}
然后我定义这样的一条消息:
public class VersionMessage : IMessage<VersionPayload>
{
public MessageFlag Flags { get; set; }
public MessageCommand Command { get; set; }
public VersionPayload Payload { get; private set; }
public VersionMessage()
{
this.Command = MessageCommand.version;
this.Payload = new VersionPayload();
}
public VersionMessage(VersionPayload payload)
{
this.Command = MessageCommand.version;
this.Payload = payload;
}
}
我将注册多个消息。 将有一种方法可以接收和反序列化消息,并选择消息类型及其有效负载。
在此类中,我希望接收IMessage <>的列表,并能够在所有实现中进行迭代并确定我想要的消息实例。
我正在考虑做的注册:
container.RegisterType(
typeof(IMessage<>), typeof(VersionMessage), MessageCommand.version.ToString());
如何在构造函数中注入此IMessage <>?
还有其他方法可以创建这种工厂,让我获得正确的消息实例吗?
很多 Paulo Aboim Pinto