B. *_*hof 1 c# system.reflection
是否可以检查存储的类型是否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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
每当我执行此代码时,它都不会通过ifstatemenet.主要原因是每当我这样做pi.GetType()时都说它是一个PropertyInfo.这很明显,因为它被声明为PropertyInfo.但我希望你明白这个主意.
我还发现它pi.PropertyType.Name包含了属性的实际类型的名称.无论如何我可以IsPrimitive在这家酒店执行吗?如果没有,是否有任何工作让我这样做?
我检查了如何测试Type是原始的但是在这种情况下用户正在使用直接类型而我正在使用PropertyInfo.
主要原因是每当我做pi.GetType()时它就会说它是一个PropertyInfo.
您应该使用PropertyTypeproperty PropertyInfo而不是using GetType()方法.
摘自文档:
获取此属性的类型.
而不是
pi.GetType().IsPrimitive
Run Code Online (Sandbox Code Playgroud)
用这个
pi.PropertyType.IsPrimitive
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |