Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }