获取属性类型和泛型类型参数
如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