/// <summary> /// Gets the <see cref="InjectAttribute"/> on properties. /// </summary> /// <param myName="memberInfo">The <see cref="MemberInfo"/>.</param> /// <returns>The attribute</returns> public static InjectAttribute GetInjectAttribute(MemberInfo memberInfo) { InjectAttribute attribute = Attribute.GetCustomAttribute(memberInfo, typeof(InjectAttribute), true) as InjectAttribute; if (attribute != null) { attribute.Name = attribute.Name ?? memberInfo.Name; } return(attribute); }
/// <summary> /// Usually the implementation will look in the configuration property /// of the model or the service interface, or the implementation looking for /// something. /// </summary> /// <param name="kernel">The kernel instance</param> /// <param name="model">The component model</param> public void ProcessModel(IKernel kernel, ComponentModel model) { PropertyInfo[] properties = model.Implementation.GetProperties(BINDING_FLAGS_SET); IDictionary <InjectAttribute, PropertyInfo> inMembers = new Dictionary <InjectAttribute, PropertyInfo>(); IDictionary <InjectEntityAttribute, PropertyInfo> inEntityMembers = new Dictionary <InjectEntityAttribute, PropertyInfo>(); for (int i = 0; i < properties.Length; i++) { InjectAttribute injectAttribute = AttributeUtil.GetInjectAttribute(properties[i]); if (injectAttribute != null) { inMembers.Add(injectAttribute, properties[i]); } InjectEntityAttribute injectEntityAttribute = AttributeUtil.GetInjectEntityAttribute(properties[i]); if (injectEntityAttribute != null) { inEntityMembers.Add(injectEntityAttribute, properties[i]); } } model.ExtendedProperties[InMembers] = inMembers; model.ExtendedProperties[InEntityMembers] = inEntityMembers; }