BMW FAQ Club BMW FAQ Club
Registrarse Blogs Galería Marcar como leído Ayuda


Regresar   BMW FAQ Club > Blogs > Danny Bembibre (dbembibre)


Pensamientos al azar acerca de BMW FAQ Club
Valorar Entrada

Devolver tipos anonimos en Mono

Escrito 20-sep-2011 a las 10:30 por Danny

Supuestamente no pueden devolverse tipos anónimos ya que el compilador es "strongly typed" por tanto cuando se crea una variable var, el compilador le crea un envoltorio de clase con tipos concretos.

Código PHP:
var ejemplo new { Coche="Honda"Modelo="S2000"Color="Rojo" };

Esto es un ejemplo de lo que el compilador genera

  
[CompilerGenerated]
  public 
sealed class <Projection>f__0
  
{
        public <
Projection>f__0();
        public 
override bool Equals(object);
        public 
override int GetHashCode();
        public 
override string ToString();

        public 
string Coche getset; }
        public 
string Modelo getset; }
        public 
string Color getset; }

  
        private 
string _Coche;
        private 
string _Modelo;
        private 
string _Color;
  } 
Una forma para devolver tipos anónimos es la que se puede ver a continuación. Convertir objetos en tipos concretos a través de una función.

Código PHP:
 class Program
    
{  
          
// Metodo que devuelve un objeto anonimo
          
public static object DevuelveAnonimo()
          {
            return new { 
Coche="Honda"Modelo="S2000"Color="Rojo" };
          }

          static 
void Main(string[] args)
          {
              
object _obj DevuelveAnonimo();

              
//Aqui está la magia, el cast convierte el objeto que llega a un tipo concreto, en este caso casteamos objeto a coche, y convierte a tipo coche, modelo, color, etcétera
              
var objeto_tipado Cast(_obj, new { Coche ""Modelo ""Color="" });

              
Console.WriteLine("Coche={0}, Modelo={1}, Color={2}"objeto_tipado.Cocheobjeto_tipado.Modeloobjeto_tipado.Color);
              
Console.ReadLine();
          }
 
         
         static 
T Cast<T>(object objT type)
         {
           return (
T)obj;
         } 
Credits goes to: http://tomasp.net/articles/cannot-return-anonymous-type-from-method.aspx
Categoría: BMWFAQ Club, Linux, Mono
Vistas 1386 Comentarios 0
« Anterior     Regresar     Siguiente »
Total de Comentarios 0

Comentarios

 

Todas las horas son GMT +2. La hora es 03:30.
© 1998-2011 BMW FAQ CLUB
Para cualquier información relacionada con este sitio contacte con Danny
Para ejercer su derecho de cancelación de sus datos por favor solicitelo a través del siguiente correo:info(arroba)bmwfaq.com
Todos los logos y marcas registradas que puedan aparecer, son propiedad de sus respectivos dueños.
Esta web cumple con las leyes LSSI como puede ver en: Condiciones de uso y Privacidad de datos
Search Engine Friendly URLs by vBSEO ©2011, Crawlability, Inc.
Página Generada en 0.10835 segundos