public void SetValue(object obj, object value) { if (!isSetterReady) { if (propertyInfo.CanWrite && (propertyInfo.GetSetMethod() != null)) { // create delegate setter = DelegateUtility.CreateSetter(propertyInfo); // get default value defaultValue = TypeCache.Instance.GetDefaultValue(propertyType); } // set flag isSetterReady = true; } if (setter == null) { Debug.LogFormat("Property {0}.{1} has no setter", propertyInfo.DeclaringType, propertyInfo.Name); return; } if (value == null) { // set default value setter.Invoke(obj, defaultValue); } else { setter.Invoke(obj, value); } }
public object GetValue(object obj) { if (!isGetterReady) { if (propertyInfo.CanRead && (propertyInfo.GetGetMethod() != null)) { // create delegate getter = DelegateUtility.CreateGetter(propertyInfo); } // set flag isGetterReady = true; } if (getter == null) { Debug.LogFormat("Property {0}.{1} has no getter", propertyInfo.DeclaringType, propertyInfo.Name); return(null); } return(getter.Invoke(obj)); }
public object Convert(object value) { if (!isReady) { // create delegate function = DelegateUtility.CreateImplicitOperator(methodInfo); // get default value defaultValue = TypeCache.Instance.GetDefaultValue(methodInfo.ReturnType); // set flag isReady = true; } if (value == null) { // use default value return(defaultValue); } object converted = function.Invoke(value); return(converted); }