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"); }