Convertir “Entity” a una clase CRM 2011 “fuertemente tipada” (strongly typed CRM 2011 class)

 

        public static object Tipada(Entity Entidad, string SpaceName)
        {
            string bError = "0"; //Bandera para control de errores
            try
            {
                // LogicalName regresa el nombre en minusculas pero el codigo generado por
                // CrmSvcUtil.exe crea las clases con la primera letra en mayúscula
                string NombreEntidad = CultureInfo.CurrentUICulture.TextInfo.ToTitleCase(Entidad.LogicalName); 

                Type TipoEntidad = Type.GetType(String.Concat(SpaceName, ".", NombreEntidad));

                //Construye la instancia a partir de la clase generada por CrmSvcUtil.exe
                ConstructorInfo inicia = TipoEntidad.GetConstructor(new Type[] { });
                object ent = inicia.Invoke(new object[] { });
                
                //Obtiene la propiedad Attibutes de la instancia Entity a convertir
                //Esta propiedad tiene los pares Elemento,Valor
                PropertyInfo atts = ent.GetType().GetProperty("Attributes");
                
                //Asigna los pares Elemento,Valor a las propiedades de la instancia tipada
                atts.SetValue(ent, Entidad.Attributes, null);
                
                return ent;
            }
            catch (System.ServiceModel.FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> e)
            {
                throw new InvalidPluginExecutionException();
            }
            catch (Exception e)
            {
                throw new InvalidPluginExecutionException();
            }
        }

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s