private static void SetMember(Object obj, Object value, MemberInfo member){
switch(member.MemberType){
case MemberTypes.Field:
FieldInfo field = (FieldInfo)member;
if (!field.IsLiteral && !field.IsInitOnly){
if (field is JSField)
field.SetValue(obj, value);
else
field.SetValue(obj, Convert.CoerceT(value, field.FieldType), BindingFlags.SuppressChangeType, null, null);
}
return;
case MemberTypes.Property:
PropertyInfo property = (PropertyInfo)member;
if (property is JSProperty || property is JSWrappedProperty){
property.SetValue(obj, value, null);
return;
}
MethodInfo setMeth = JSProperty.GetSetMethod(property, false);
if (setMeth != null)
try{
setMeth.Invoke(obj, BindingFlags.SuppressChangeType, null, new Object[]{Convert.CoerceT(value, property.PropertyType)}, null);
}catch(TargetInvocationException e){
throw e.InnerException;
}
return;
}
}