能否检查存储在PropertyInfo
中的类型是否为原始类型?
例如,我想要做到这一点:
// from and to are both objects declared in the parameters.
Type fType = from.GetType();
Type tType = to.GetType();
PropertyInfo[] fmpi = fType.GetProperties();
PropertyInfo[] tmpi = tType.GetProperties();
foreach(var pi in tmpi)
{
if (pi.CanWrite)
{
var fpi = fmpi.SingleOrDefault(item => item.Name.ToLower() == pi.Name.ToLower());
if (pi.GetType().IsPrimitive || pi.GetType() == typeof(string))
{
pi.SetValue(to, fpi.GetValue(from, null));
}
}
}
每当我执行这段代码时,它都不会进入
if
语句。主要原因是每当我执行pi.GetType()
时,它都会说它是一个PropertyInfo
。这是很显然的,因为它被声明为PropertyInfo
。但是我希望你能理解我的意思。我还发现
pi.PropertyType.Name
包含属性的实际类型的名称。有没有办法在此属性上执行IsPrimitive
?如果没有,是否有任何解决方法可以让我做类似的事情?我查看了如何测试类型是否为原始类型,但在这种情况下,用户正在使用直接类型而我正在使用
PropertyInfo
。