using System.Collections.Generic;
namespace VendorNamespace1
public string Message { get; set; }
public int ErrorNumber { get; set; }
namespace VendorNamespace2
public string Message { get; set; }
public int ErrorNumber { get; set; }
public string Message { get; private set; }
public int ErrorNumber { get; private set; }
public Error(object vendorError)
var t = vendorError.GetType();
foreach (var source in t.GetProperties(BindingFlags.Instance | BindingFlags.Public))
foreach (var dest in typeof(Error).GetProperties(BindingFlags.Instance | BindingFlags.Public))
if (dest.Name != source.Name) continue;
if (dest.PropertyType != source.PropertyType) continue;
dest.SetValue(this, source.GetValue(vendorError, null));
public static void Main()
var e1 = new VendorNamespace1.Error
var e2 = new VendorNamespace2.Error
var vendorErrorList = new List<object> { e1, e2 };
var myErrorList = vendorErrorList.Select( e => new Error(e) );
foreach (var e in myErrorList)
Console.WriteLine("Number {0} Message {1}", e.ErrorNumber, e.Message);