public InvolvedTypeMember(MemberInfo memberInfo, ReflectedObject targetMemberDefinition, IEnumerable<ReflectedObject> mixinMemberDefinitions) { ArgumentUtility.CheckNotNull("memberInfo", memberInfo); MemberInfo = new OverridingMemberInfo(memberInfo); AddSubMemberInfos(memberInfo); SetMixinOverride(targetMemberDefinition); AddTargetOverrides(mixinMemberDefinitions); MixinMemberDefinitions = mixinMemberDefinitions ?? Enumerable.Empty<ReflectedObject>(); TargetMemberDefinition = targetMemberDefinition; OverridingMixinTypes = GetOverridingMixinTypes(); OverridingTargetTypes = GetOverridingTargetTypes(); }
public InvolvedTypeMember(MemberInfo memberInfo, ReflectedObject targetMemberDefinition, IEnumerable <ReflectedObject> mixinMemberDefinitions) { ArgumentUtility.CheckNotNull("memberInfo", memberInfo); MemberInfo = new OverridingMemberInfo(memberInfo); AddSubMemberInfos(memberInfo); SetMixinOverride(targetMemberDefinition); AddTargetOverrides(mixinMemberDefinitions); MixinMemberDefinitions = mixinMemberDefinitions ?? Enumerable.Empty <ReflectedObject>(); TargetMemberDefinition = targetMemberDefinition; OverridingMixinTypes = GetOverridingMixinTypes(); OverridingTargetTypes = GetOverridingTargetTypes(); }
private void AddOverriddenMember(MemberInfo overriddenMember, OverridingMemberInfo.OverrideType type) { MemberInfo.AddOverriddenMember (overriddenMember, type); if (overriddenMember.MemberType == MemberTypes.Property) { var overriddenProperty = (PropertyInfo) overriddenMember; if (overriddenProperty.GetGetMethod () != null && _subMemberInfos.ContainsKey (SubMemberType.PropertyGet)) _subMemberInfos[SubMemberType.PropertyGet].AddOverriddenMember (overriddenProperty.GetGetMethod (), type); if (overriddenProperty.GetSetMethod () != null && _subMemberInfos.ContainsKey (SubMemberType.PropertySet)) _subMemberInfos[SubMemberType.PropertyGet].AddOverriddenMember (overriddenProperty.GetSetMethod (), type); } if (overriddenMember.MemberType == MemberTypes.Event) { var overriddenEvent = (EventInfo) overriddenMember; if (_subMemberInfos.ContainsKey (SubMemberType.EventAdd)) _subMemberInfos[SubMemberType.PropertyGet].AddOverriddenMember(overriddenEvent.GetAddMethod(), type); if (_subMemberInfos.ContainsKey (SubMemberType.EventRemove)) _subMemberInfos[SubMemberType.PropertyGet].AddOverriddenMember(overriddenEvent.GetRemoveMethod(), type); } }