/// <summary>
/// Use XML serialization that supports interface-based messages.
/// </summary>
/// <param name="config"></param>
/// <returns></returns>
public static Configure XmlSerializer(this Configure config)
{
if (!Configure.BuilderIsConfigured())
{
SetXmlSerializerAsDefault.UseXmlSerializer = true;
return(config);
}
var messageTypes = Configure.TypesToScan.Where(t => t.IsMessageType()).ToList();
var mapper = new MessageMapper();
mapper.Initialize(messageTypes);
config.Configurer.RegisterSingleton <IMessageMapper>(mapper);
config.Configurer.RegisterSingleton <IMessageCreator>(mapper);//todo - Modify the builders to auto register all types
var serializer = new XmlMessageSerializer(mapper);
serializer.Initialize(messageTypes);
config.Configurer.RegisterSingleton <IMessageSerializer>(serializer);
return(config);
}