This method returns the value of a dynamic entity attribute.
/// <summary>
/// This method returns the value of a dynamic entity attribute.
/// </summary>
private static object GetAttribute(BusinessEntity entity, string attribute) {
if (entity.GetType() == typeof(DynamicEntity)) {
DynamicEntity de = (DynamicEntity)entity;
foreach (Property prop in de.Properties) {
if (prop.Name == attribute) {
PropertyInfo propInfo = prop.GetType().GetProperty("Value");
return propInfo.GetValue(prop, null);
}
}
return null;
}
else {
PropertyInfo propInfo = entity.GetType().GetProperty(attribute);
return propInfo.GetValue(entity.ToString(), null);
}
}
GetStringValue
private static string GetStringValue(DynamicEntity entity, string atributo) {
object resultado;
resultado = GetAttribute(entity, atributo);
if (resultado != null) {
string tipo = resultado.GetType().ToString();
tipo = tipo.Substring(tipo.LastIndexOf('.') + 1, tipo.Length - tipo.LastIndexOf('.') - 1);
switch (tipo) {
case "String":
return (string)resultado;
case "Picklist":
return ((Picklist)resultado).name;
case "Lookup":
return ((Lookup)resultado).Value.ToString();
case "Customer":
return ((Customer)resultado).Value.ToString();
case "Key":
return ((Key)resultado).Value.ToString();
case "CrmDateTime":
return ((CrmDateTime)resultado).date;
case "CrmBoolean":
return ((CrmBoolean)resultado).name;
case "CrmMoney":
return ((CrmMoney)resultado).formattedvalue;
case "CrmNumber":
return ((CrmNumber)resultado).Value.ToString();
case "Owner":
return ((Owner)resultado).Value.ToString();
}
}
return "sin valor";
}
ConvertToXml
private static string ConvertToXml(DynamicEntity entity) {
StringBuilder xml = new StringBuilder();
// open root element
xml.Append(string.Format("<{0}>\r\n", entity.Name));
// loop through properties and write out elements
foreach (Property prop in entity.Properties) {
string propName = prop.Name;
//string propVal = entity.Properties[prop.Name].ToString();
string propVal = GetStringValue(entity, propName);
xml.Append(string.Format("<{0}>{1}</{0}>\r\n", propName, propVal));
}
// close root element
xml.Append(string.Format("</{0}>\r\n", entity.Name));
// return results
return xml.ToString();
}
No hay comentarios:
Publicar un comentario