/// <summary> /// /// </summary> /// <typeparam name="TDescriptor"></typeparam> /// <typeparam name="TCollection"></typeparam> /// <param name="declaringType"></param> /// <param name="nonPublic"></param> /// <param name="attributeType"></param> /// <param name="inherit"></param> /// <param name="canWrite"></param> /// <param name="canRead"></param> /// <returns></returns> public static TCollection RetrieveMemberDescriptors <TDescriptor, TCollection>(Type declaringType, bool nonPublic, Type attributeType, bool inherit, bool?canWrite, bool?canRead) where TDescriptor : MemberDescriptor where TCollection : ReadOnlyListCollection <TDescriptor> { var _descriptors = PropertyMemberHelpers.RetrieveMembers(declaringType, nonPublic, attributeType, inherit, canWrite, canRead) .Select(prop => MemberDescriptor.Initializer.Initialize <TDescriptor>(prop)); return(ReadOnlyListCollection <TDescriptor> .Initializer.Initialize <TCollection>(_descriptors)); }
/// <summary> /// /// </summary> /// <param name="instance"></param> /// <param name="canWrite"></param> /// <param name="canRead"></param> /// <returns></returns> public static PropertyInfo[] RetrieveMembers(object instance, bool?canWrite, bool?canRead) { if (null == instance) { throw new ArgumentNullException("instance"); } return(PropertyMemberHelpers.RetrieveMembers(instance.GetType(), canWrite, canRead)); }
/// <summary> /// /// </summary> /// <param name="instance"></param> /// <param name="nonPublic"></param> /// <param name="attributeTypes"></param> /// <param name="inherit"></param> /// <param name="canWrite"></param> /// <param name="canRead"></param> /// <returns></returns> public static PropertyInfo[] RetrieveMembers(object instance, bool nonPublic, Type[] attributeTypes, bool inherit, bool?canWrite, bool?canRead) { if (null == instance) { throw new ArgumentNullException("instance"); } return(PropertyMemberHelpers.RetrieveMembers(instance.GetType(), nonPublic, attributeTypes, inherit, canWrite, canRead)); }
/// <summary> /// /// </summary> /// <typeparam name="TDescriptor"></typeparam> /// <param name="declaringType"></param> /// <param name="nonPublic"></param> /// <param name="attributeType"></param> /// <param name="inherit"></param> /// <param name="canWrite"></param> /// <param name="canRead"></param> /// <returns></returns> public static TDescriptor RetrieveMemberDescriptor <TDescriptor>(Type declaringType, bool nonPublic, Type attributeType, bool inherit, bool?canWrite, bool?canRead) where TDescriptor : MemberDescriptor { var _properties = PropertyMemberHelpers.RetrieveMembers(declaringType, nonPublic, attributeType, inherit, canWrite, canRead); if (0 < _properties.Length) { return(MemberDescriptor.Initializer.Initialize <TDescriptor>(_properties[0])); } throw new NullReferenceException(string.Format("The '{0}' attribute does not exist in {1}", attributeType.Name, declaringType.FullName)); }
/// <summary> /// /// </summary> /// <param name="declaringType"></param> /// <param name="nonPublic"></param> /// <param name="attributeTypes"></param> /// <param name="inherit"></param> /// <param name="canWrite"></param> /// <param name="canRead"></param> /// <returns></returns> public static PropertyInfo[] RetrieveMembers(Type declaringType, bool nonPublic, Type[] attributeTypes, bool inherit, bool?canWrite, bool?canRead) { if (null == attributeTypes) { throw new ArgumentNullException("attributeTypes"); } var _dummy = new ListCollection <PropertyInfo>(); var _properties = PropertyMemberHelpers.RetrieveMembers(declaringType, nonPublic, canWrite, canRead); foreach (var _property in _properties) { if (AttributeMemberHelpers.IsSpecificTypeDefined(_property, attributeTypes, inherit)) { _dummy.Add(_property); } } return(_dummy.ToArray()); }
/// <summary> /// /// </summary> /// <param name="declaringType"></param> /// <param name="nonPublic"></param> /// <param name="returnType"></param> /// <param name="canWrite"></param> /// <param name="canRead"></param> /// <returns></returns> public static PropertyInfo[] RetrieveMembers(Type declaringType, bool nonPublic, Type returnType, bool?canWrite, bool?canRead) { if (null == returnType) { throw new ArgumentNullException("returnType"); } var _dummy = new ListCollection <PropertyInfo>(); var _properties = PropertyMemberHelpers.RetrieveMembers(declaringType, nonPublic, canWrite, canRead); foreach (var _property in _properties) { var _returnType = _property.PropertyType; if (returnType.Equals(_returnType) || returnType.IsAssignableFrom(_returnType)) { _dummy.Add(_property); } } return(_dummy.ToArray()); }