Beispiel #1
0
        public IEnumerable <ICodeAidMemberInfo> FilteredAttachedProperties(ICodeAidTypeInfo parentTypeInfo, IEnumerable <ICodeAidTypeInfo> ancestorTypeInfos)
        {
            if (parentTypeInfo == null)
            {
                return(Enumerable.Empty <ICodeAidMemberInfo>());
            }
            IAttachedPropertiesProvider propertiesProvider = this.AttachedPropertiesProvider;

            if (propertiesProvider == null)
            {
                throw new NotSupportedException();
            }
            using (IAttachedPropertiesAccessToken propertiesAccessToken = propertiesProvider.AttachedProperties.Access())
            {
                CodeAidTypeInfo    realParentTypeInfo    = parentTypeInfo as CodeAidTypeInfo;
                IEnumerable <Type> realAncestorTypeInfos = ancestorTypeInfos != null?Enumerable.Select <CodeAidTypeInfo, Type>(Enumerable.Cast <CodeAidTypeInfo>((IEnumerable)ancestorTypeInfos), (Func <CodeAidTypeInfo, Type>)(ti => ti.type.RuntimeType)) : (IEnumerable <Type>)null;

                return(Enumerable.Cast <ICodeAidMemberInfo>((IEnumerable)Enumerable.Select <IAttachedPropertyMetadata, CodeAidAttachedPropertyInfo>(Enumerable.Where <IAttachedPropertyMetadata>((IEnumerable <IAttachedPropertyMetadata>)propertiesAccessToken.AttachedPropertiesForType(this.type), (Func <IAttachedPropertyMetadata, bool>)(property => property.IsBrowsable(realParentTypeInfo.type.RuntimeType, realAncestorTypeInfos))), (Func <IAttachedPropertyMetadata, CodeAidAttachedPropertyInfo>)(property => new CodeAidAttachedPropertyInfo(this.owner, property.Name, property.PropertyType)))));
            }
        }
Beispiel #2
0
 public bool IsAssignableFrom(ICodeAidTypeInfo type)
 {
     return(this.type.IsAssignableFrom((ITypeId)((CodeAidTypeInfo)type).type));
 }