示例#1
0
        /// <summary>
        /// 获取对应类型的成员集合
        /// </summary>
        /// <param name="type">类型</param>
        /// <param name="bindingFlag">查找标记</param>
        /// <param name="memberCategory">要获取的成员类型类别</param>
        /// <returns></returns>
        public static MemberInfo[] GainMembers(Type type,
                                               BindingFlags bindingFlag,
                                               MemberCategories memberCategory)
        {
            if (type == default)
            {
                return(EmptyArrays.MemberInfo);
            }
            AddOrGetTypesInfosDictionary(type);
            switch (memberCategory)
            {
            case MemberCategories.Member:
                return(ms_TypesInfosDictionary[type].Members?.Where(x =>
                                                                    (GetBindingFlags(x) & bindingFlag) > 0)?.ToArray() ??
                       EmptyArrays.MemberInfo);

            case MemberCategories.Property:
                return(ms_TypesInfosDictionary[type].Properties?.Where(x =>
                                                                       (GetBindingFlags(x) & bindingFlag) > 0)?.ToArray() ??
                       EmptyArrays.PropertyInfo);

            case MemberCategories.Field:
                return(ms_TypesInfosDictionary[type].Fields?.Where(x =>
                                                                   (GetBindingFlags(x) & bindingFlag) > 0)?.ToArray() ??
                       EmptyArrays.FieldInfo);

            case MemberCategories.Method:
                return(ms_TypesInfosDictionary[type].Methods?.Where(x =>
                                                                    (GetBindingFlags(x) & bindingFlag) > 0)?.ToArray() ??
                       EmptyArrays.MethodInfo);

            case MemberCategories.EventInfo:
                return(ms_TypesInfosDictionary[type].Events?.Where(x =>
                                                                   (GetBindingFlags(x) & bindingFlag) > 0)?.ToArray() ??
                       EmptyArrays.EventInfo);

            case MemberCategories.Variable:
                return(ms_TypesInfosDictionary[type].Variables?.Where(x =>
                                                                      (GetBindingFlags(x) & bindingFlag) > 0)?.ToArray() ??
                       EmptyArrays.MemberInfo);

            default:
                return(EmptyArrays.MemberInfo);
            }
        }
示例#2
0
 /// <summary>
 /// 获取对应类型的成员集合
 /// </summary>
 /// <param name="type">类型</param>
 /// <param name="bindingFlag">查找标记</param>
 /// <param name="memberCategory">要获取的成员类型类别</param>
 /// <returns></returns>
 public static MemberInfo[] GainMembers(this Type type,
                                        BindingFlags bindingFlag,
                                        MemberCategories memberCategory)
 {
     return(ReflectionHelper.GainMembers(type, bindingFlag, memberCategory));
 }
示例#3
0
        public async Task ShowReleventContact()
        {
            var allcontacts =
                await _membershipDataUnit.ContactsRepository.GetAllAsyncWithoutRefresh(contact =>
                                                                                       contact.LastName == Member.Contact.LastName && contact.Email == Member.Contact.Email);

            var contacts = new ObservableCollection <ContactModel>(
                allcontacts.OrderBy(contact => contact.LastName).Select(contact => new ContactModel(contact)));

            if (contacts.Count > 0)
            {
                RaisePropertyChanged("DisableParentWindow");

                var relevantContactsView = new ReleventContactsView(contacts);
                relevantContactsView.ShowDialog();

                RaisePropertyChanged("EnableParentWindow");

                if (relevantContactsView.DialogResult != null && relevantContactsView.DialogResult.Value)
                {
                    if (IsExistingContact)
                    {
                        _membershipDataUnit.ContactsRepository.Refresh(Member.Contact.Contact);
                    }
                    if (relevantContactsView.ViewModel.Contact.Contact.Member != null)
                    {
                        Member = new MemberModel(relevantContactsView.ViewModel.Contact.Contact.Member)
                        {
                            Contact  = relevantContactsView.ViewModel.Contact,
                            Category = MemberCategories.FirstOrDefault(category => category.ID == relevantContactsView.ViewModel.Contact.Contact.Member.MembershipCategory.ID)
                        };
                        Member.Contact.PropertyChanged += Contact_PropertyChanged;
                        _isEditMode      = true;
                        IsExistingMember = true;
                        _originalMember  = Member.Clone();
                        SaveCommand.RaiseCanExecuteChanged();
                    }
                    else
                    {
                        Member.Contact   = relevantContactsView.ViewModel.Contact;
                        Member.Member.ID = Member.Contact.Contact.ID;
                        Member.Contact.PropertyChanged += Contact_PropertyChanged;
                    }
                    IsExistingContact = true;
                    IsIgnored         = true;
                    if (IsOkButtonClick)
                    {
                        if (!_isEditMode)
                        {
                            SaveContactChangesAddMember();
                        }
                    }
                }
                if (relevantContactsView.DialogResult == null || !relevantContactsView.DialogResult.Value)
                {
                    if (IsOkButtonClick)
                    {
                        _membershipDataUnit.ContactsRepository.Add(Member.Contact.Contact);
                        SaveContactChangesAddMember();
                    }
                    else
                    {
                        IsIgnored = true;
                    }
                }
            }
            else
            {
                if (IsOkButtonClick)
                {
                    if (!IsExistingContact)
                    {
                        _membershipDataUnit.ContactsRepository.Add(Member.Contact.Contact);
                    }
                    SaveContactChangesAddMember();
                }
            }
        }