static void SetValue(MemberInfo mi, object o, object val)
{
var fi = mi as FieldInfo;
if (fi != null)
{
fi.SetValue(o, val);
return;
}
var pi = mi as PropertyInfo;
if (pi == null)
return;
var setMethod = pi.GetSetMethod();
setMethod.Invoke(o, new[] { val });
}