我有这部分方法:
var t = typeof(T);
var fieldValues = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
var typesToCast = new List<string>();
var fieldsToCast = new List<string>();
foreach (var field in fieldValues)
{
var attr = (MetaAttribute[])field.GetCustomAttributes(typeof(MetaAttribute), false);
if (attr.Length > 0)
{
fieldsToCast.Add(field.Name.ToString());
typesToCast.Add(field.PropertyType.Name);
}
}
但是,如果我有一个属性:
public MyModel something {get;set;}
的结果
field.PropertyType.Name
是MyModel
但是,我有public List<MyModel> something {get;set;}
如何使用MyModel
的反射来获取List
类型?
答案 0 :(得分:1)
您正在寻找的是类型的第一个类型参数。你可以用它来获得它:
if (field.PropertyType.IsGenericType)
{
var typeArguments = field.PropertyType.GetGenericArguments();
typesToCast.Add(typeArguments[0].Name);
}
else
{
typesToCast.Add(field.PropertyType.Name);
}