在entity.GetAttributeValue<T>(fieldname)
上传递值(数据类型和字段名)的良好做法是什么?目前我看到的是:entity.GetAttributeValue<string>(address)
。如果没有在.GetAttributeValue
方法上专门传递那些参数(字符串,地址),有没有更好的方法呢?
目前我有这样的代码:
var prop = typeof(PersonAddress).GetProperties();
string address;
foreach(var p in prop)
{
address = entity.GetAttributeValue<p.PropertyType>(p.name)
}
但p.PropertyType
GetAttributeValue<T>
作为参考类型
答案 0 :(得分:0)
您需要使用反射调用GetAttributeValue泛型方法,然后通过提供类型来构造它:
var getAttributeValueMethod = typeof(Microsoft.Xrm.Sdk.Entity).GetMethod("GetAttributeValue");
foreach (var property in typeof (PersonAddress).GetProperties())
{
var generic = getAttributeValueMethod.MakeGenericMethod(property.PropertyType);
var attributeValue = generic.Invoke(entity,
new object[] {
property.Name.ToLowerInvariant()});
}
致谢:Jon Skeet