private void mapSetters(IReflectedClass reflected, IBinding binding, Type type) { KeyValuePair <Type, MemberInfoWrapper>[] pairs = new KeyValuePair <Type, MemberInfoWrapper> [0]; object[] names = new object[0]; MemberInfo[] members = type.FindMembers(MemberTypes.Property | MemberTypes.Field, BindingFlags.FlattenHierarchy | BindingFlags.SetProperty | BindingFlags.SetField | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, null); foreach (MemberInfo member in members) { object[] injections = member.GetCustomAttributes(typeof(Inject), true); if (injections.Length > 0) { Inject attr = injections [0] as Inject; MemberInfoWrapper point = new MemberInfoWrapper(member); Type pointType = point.Type; KeyValuePair <Type, MemberInfoWrapper> pair = new KeyValuePair <Type, MemberInfoWrapper> (pointType, point); pairs = AddKV(pair, pairs); object bindingName = attr.name; names = Add(bindingName, names); } } reflected.Setters = pairs; reflected.SetterNames = names; }
//Inject the value into the target at the specified injection point private void injectValueIntoPoint(object value, object target, MemberInfoWrapper point) { failIf(target == null, "Attempt to inject into a null target", InjectionExceptionType.NULL_TARGET); failIf(point == null, "Attempt to inject into a null point", InjectionExceptionType.NULL_INJECTION_POINT); failIf(value == null, "Attempt to inject null into a target object", InjectionExceptionType.NULL_VALUE_INJECTION); point.SetValue(target, value); }
protected MemberWriter(GenerationManifest artifacts, FrameworkVersion version, MemberInfoWrapper info) : base(artifacts, version) { this._info = info; }