Esempio n. 1
0
        public ITweakable RegisterTweakable <T>(TweakableInfo <T> info, FieldInfo fieldInfo, object instance = null)
        {
            ITweakable tweakable = TweakableFactory.MakeTweakableFromInfo(info, fieldInfo, instance);

            RegisterTweakable(tweakable);
            return(tweakable);
        }
        public void ProcessAttribute(TweakableAttribute input, MemberInfo memberInfo, IBoundInstance instance = null)
        {
            ITweakable tweakable = null;

            try
            {
                if (memberInfo.MemberType == MemberTypes.Property)
                {
                    PropertyInfo propertyInfo = (PropertyInfo)memberInfo;
                    tweakable = TweakableFactory.MakeTweakable(input, propertyInfo, instance);
                }
                else
                {
                    if (memberInfo.MemberType != MemberTypes.Field)
                    {
                        throw new ProcessorException("TweakableProcessor cannot process non PropertyInfo or FieldInfo types");
                    }
                    FieldInfo fieldInfo = (FieldInfo)memberInfo;
                    tweakable = TweakableFactory.MakeTweakable(input, fieldInfo, instance);
                }
            }
            catch (ProcessorException)
            {
                throw;
            }
            catch (Exception ex2)
            {
                Log.LogException(this, ex2);
            }
            if (tweakable != null)
            {
                ProvideResult(tweakable);
            }
        }
        public void ProcessAttribute(TweakableAttribute input, MemberInfo memberInfo, IBoundInstance instance = null)
        {
            ITweakable          tweakable           = null;
            AutoTweakableResult autoTweakableResult = null;

            if (memberInfo.MemberType == MemberTypes.Field)
            {
                FieldInfo fieldInfo = (FieldInfo)memberInfo;
                if (fieldInfo.FieldType.IsSubclassOf(typeof(AutoTweakable)))
                {
                    AutoTweakable  instance2     = fieldInfo.GetValue(instance.Instance) as AutoTweakable;
                    FieldInfo      field         = fieldInfo.FieldType.GetField("value", BindingFlags.Instance | BindingFlags.Public);
                    IBoundInstance boundInstance = BoundInstanceFactory.Create(instance2, instance.UniqueId);
                    tweakable           = TweakableFactory.MakeTweakable(input, field, boundInstance, memberInfo);
                    autoTweakableResult = new AutoTweakableResult();
                    autoTweakableResult.autoTweakable = boundInstance.Instance as AutoTweakable;
                    autoTweakableResult.tweakble      = tweakable;
                    autoTweakableResult.uniqueId      = boundInstance.UniqueId;
                }
                if (autoTweakableResult != null)
                {
                    ProvideResult(autoTweakableResult);
                }
                return;
            }
            throw new ProcessorException("AutoTweakableProcessor cannot process non FieldInfo types");
        }