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))))); } }
public bool IsAssignableFrom(ICodeAidTypeInfo type) { return(this.type.IsAssignableFrom((ITypeId)((CodeAidTypeInfo)type).type)); }