Estoy obteniendo una lista de las listas de comercialización. Mientras lo hago, parece ser una operación exitosa de acuerdo con mi control usando intellisense. Cuando busco ...Entities[0].Attributes["nick"]
obtengo un objeto (con los datos correctos en algún lugar). Pero no puedo acceder a él programáticamente (en su lugar, tengo que hacer clic como un mono a través de las ventajas para desplegar las cosas buenas).¿Cómo acceder a los valores de fetchedXML cuando se usan alias para los atributos en CRM Dynamics?
De hecho, estoy obteniendo las entidades que supuestamente usan el siguiente código. El problema es que no son Strings
según la computadora. Son del tipo Microsoft.Xrm.Sdk.AliasedValue
y no sé cómo acceder al nick actual dentro de ellos.
new Contact
{
Name = element.Attributes["nick"] as String,
Mail = element.Attributes["mail"] as String
}
Intellisense dice que es Value
allí (y es el valor correcto también), pero no puedo acceder a él escribiendo .Value
. Sospecho que necesito usar "como" o algo así, pero en este momento estoy atascado. ¿Algún consejo? As
'ing a String
, que se supone que funciona, me da null
...
He leído this article y varios otros como él y la forma en que lo veo, se supone que debo ser capaz de acceder a todos las cosas divertidas allí. No puedo aunque ...
He notado que el siguiente código me da los datos que estoy tratando desesperadamente de obtener pero este no puede ser una sintaxis profesional, ¿o sí? En serio, se ve como un estudiante de secundaria con TDAH y la resaca trató de hacer eso ...
new Contact
{
Name = ((Microsoft.Xrm.Sdk.AliasedValue)result.Entities[0].Attributes["nick"]).Value,
Mail = ((Microsoft.Xrm.Sdk.AliasedValue)result.Entities[0].Attributes["mail"]).Value
}
Quiero decir, en serio - se trata de una pieza de código feo ... Tiene que haber una manera mejor! Sin embargo, me temo que no se debe a this discussion parece estar usando la sintaxis, así ...
No hay nada malo con el elenco –
@JamesWood Jaja, dicen que a mi antiguo profesor en la Universidad. "Si necesitas lanzar, tienes un mal diseño. ¡Hecho!" Creo que estaba en lo cierto en que ** en algunos casos ** el casting ** es ** correcto, pero probablemente culparía a Microsoft en este caso. Fue en los años 90 cuando Java era el niño de oro y el único camino a seguir. MS era malvado y un engendro de Satanás, jaja. –
Bueno, si no quieres lanzar, puedes usar las entidades fuertemente tipadas. El objetivo de la Entidad con límite de tiempo es permitirle ser flexible, lo que en este caso significa que tiene que lanzar de vez en cuando. También en este caso, no estás lanzando para cambiar el objeto (por ejemplo, int a decimal), estás lanzando para que tengas acceso a todas las propiedades. –