using System.ComponentModel;
public static void Main()
var values = new string[]
var type = typeof(IBlah);
var iprops = type.GetProperties();
foreach(var zip in iprops.Zip(values, (prop, v) => new { Prop = prop, Value = v } ))
var prop = typeof(Blah).GetProperty(zip.Prop.Name);
var propType = prop.PropertyType;
var converter = TypeDescriptor.GetConverter(propType);
var newValue = converter.ConvertFromString(zip.Value);
prop.SetValue(blah, newValue);
Console.WriteLine("Converted {0} to {1} for property {2}", zip.Value.GetType(), propType, zip.Prop.Name);
Console.WriteLine("Value: {0} of type {1}", zip.Value, zip.Value.GetType());
Console.WriteLine("New Value: {0} of type {1}", newValue, newValue.GetType());
string Name { get; set; }
DateTime BirthDate { get; set; }
Uri WebSite { get; set; }
public class Blah : IBlah
public string Name { get; set; }
public DateTime BirthDate { get; set; }
public Uri WebSite { get; set; }