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