/// <summary>
        /// 获取组件顶层的所有特征
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        public static IEnumerable <IFeature> GetCompTopFeatures(this IComponent2 comp)
        {
            var feat = comp.FirstFeature();

            while (feat != null)
            {
                yield return(feat);

                feat = feat.GetNextFeature() as Feature;
            }
        }
        /// <summary>
        /// 获取特定的特征
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="func"></param>
        /// <returns></returns>
        public static IList <Feature> TakeCompTopFeaturesWhile(this IComponent2 comp, Func <Feature, bool> func)
        {
            List <Feature> features = new List <Feature>();
            var            feat     = comp.FirstFeature();

            while (feat != null)
            {
                if (func != null && func(feat))
                {
                    features.Add(feat);
                }
                feat = feat.GetNextFeature() as Feature;
            }
            return(features);
        }
        /// <summary>
        /// 用类型名过滤特征--只获取第一级特征
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="TypeName"></param>
        /// <returns></returns>
        public static IList <Feature> GetCompTopFeaturesWithTypeName(this IComponent2 comp, string TypeName)
        {
            List <Feature> features = new List <Feature>();
            var            feat     = comp.FirstFeature();

            while (feat != null)
            {
                if (feat.GetTypeName2() == TypeName)
                {
                    features.Add(feat);
                }
                feat = feat.GetNextFeature() as Feature;
            }
            return(features);
        }