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