获取属性类型和泛型类型参数

如public IDbSet<User> ID { get; set; }

获取属性ID的类型是IDbSet<>,且泛型参数是User类型,代码如下

        public Type[] GetAllRegEntityTypes()
        {
            var typeList = new List<Type>();
            var ps = this.GetType().GetProperties();
            foreach (var p in ps)
            {
                if (p.PropertyType.Name != typeof(IDbSet<>).Name)
                {
                    continue;
                }
                var dbEntityTypes = p.PropertyType.GetGenericArguments();
                if (dbEntityTypes == null || dbEntityTypes.Length == 0) continue;
                if (!typeList.Contains(dbEntityTypes[0]))
                {
                    typeList.Add(dbEntityTypes[0]);
                }
            }
            return typeList.ToArray();
        }

其中this.GetType().GetProperties()是获取当前类型的所有属性的类型,p.PropertyType.Name就是IDbSet<>,而p.PropertyType.GetGenericArguments()就是取泛型参数User、String

posted @ 2022-02-28 10:26  江境纣州  阅读(169)  评论(0)    收藏  举报