Сообщения TIBCO для POCO и наоборот
Недавно я занимался разработкой TIBCO, и мне интересно, как лучше конвертировать сообщения TIBCO в / из?
Это то, чем я сейчас занимаюсь, но я знаю, что должен быть лучший способ сделать это. Но мой мозг в настоящий момент зажжен, и поиск по Bing/Google или SO не возвращает ничего полезного.
public static Envelope ParseEnvelope(Message msg)
{
try
{
var field = msg.GetField("Envelope");
if(field == null) throw new ArgumentException("msg does not contain Envelope field", "msg");
var envMsg = field.Value as Message;
if(envMsg == null) throw new ArgumentException("msg.Envelope field is null or not a Message", "msg");
var envTypeField = envMsg.GetField("EnvelopeEventId");
if (envTypeField == null) throw new ArgumentException("msg.Envelope does contain EnvelopeEventId field");
var envType = envTypeField.Value as String;
if (envType == null) throw new ArgumentException("msg.Envelope.EnvelopeEventId field is null or not a String", "msg");
var env = new Envelope(envType);
}
Любая помощь или указатели приветствуются!
Сейчас я думаю о создании своего собственного типа AutoMapper для преобразования сообщений в / из, которые бы смотрели на конкретное "Поле" в корне сообщения TIBCO, чтобы получить класс, в который оно должно преобразовываться, и затем использовали бы отражение (впервые если не в кеше) для дерева свойств этого класса рекурсивно (если какое-либо свойство не является типом значения)