Exemplo n.º 1
0
        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);
                }
            }
        }