public void Run() { var registerer = new MessageRegisterer(); registerer.AddMessageTypes(typeof(IPerformSingleTaskOnComputersMessage), typeof(IInstallAssemblyMessage)); var implementations = new MessageInterfaceImplementations(new DefaultMessageInterfaceImplementationFactory(), registerer); var factory = new MessageFactory(implementations, new MessageDefinitionFactory()); var assembly = factory.Create<IInstallAssemblyMessage>(m => { m.ArtifactId = Guid.Empty; m.AssemblyFilename = "Jacob.exe"; }); var message = factory.Create<IPerformSingleTaskOnComputersMessage>(m => { m.OperationId = Guid.NewGuid(); m.Title = "Nothing"; m.Message = assembly; m.ComputerNames = new string[0]; m.Birthday = DateTime.UtcNow; }); var formatter = new XmlTransportMessageBodyFormatter(registerer, new MtaMessageMapper(implementations, factory, registerer)); formatter.Initialize(); using (var stream = new MemoryStream()) { formatter.Serialize(new IMessage[] { message }, stream); Console.WriteLine(Encoding.ASCII.GetString(stream.ToArray())); using (var reading = new MemoryStream(stream.ToArray())) { var read = formatter.Deserialize(reading); } } }
public static IMessageFactory NewFactoryForMessages(params Type[] messageTypes) { var registerer = new MessageRegisterer(); registerer.AddMessageTypes(typeof(IMessage)); registerer.AddMessageTypes(messageTypes); var factory = new MessageFactory(); factory.Initialize(messageTypes); return factory; }