public static SetterDelegate CreateSetterDelegate(Type type, FieldInfo fieldInfo)
{
#if !CompactFramework
DynamicMethod dynamicSet = CreateDynamicSetMethod(type);
ILGenerator setGenerator = dynamicSet.GetILGenerator();
setGenerator.Emit(OpCodes.Ldarg_0);
setGenerator.Emit(OpCodes.Ldarg_1);
UnboxIfNeeded(fieldInfo.FieldType, setGenerator);
setGenerator.Emit(OpCodes.Stfld, fieldInfo);
setGenerator.Emit(OpCodes.Ret);
return (SetterDelegate)dynamicSet.CreateDelegate(typeof(SetterDelegate));
#else
return (obj, newValue) => fieldInfo.SetValue(obj, newValue);
#endif
}