private FastFieldGetter GetFastGetter(object obj, string propertyName) { string key = obj.GetType().Name + "." + propertyName; FastFieldGetter res = (FastFieldGetter)fastFieldGetterLookup[key]; if (res == null) { FieldInfo fieldInfo = GetFieldInfo(obj, propertyName); res = FastFieldAccess.GetFieldGetter(fieldInfo); fastFieldGetterLookup[key] = res; } return(res); }
public virtual void SetPropertyValue(object obj, Type type, string propertyName, object value) { #if NET2 if (value == null) { SetPropertyValueReflection(obj, propertyName, value); } else { string key = obj.GetType().Name + "." + propertyName; FastFieldSetter setter = (FastFieldSetter)fastFieldSetterLookup[key]; if (setter == null) { FieldInfo fieldInfo = GetFieldInfo(obj, propertyName); setter = FastFieldAccess.GetFieldSetter(fieldInfo); fastFieldSetterLookup[key] = setter; } setter(obj, value); } #else SetPropertyValueReflection(obj, propertyName, value); #endif }