Pensamientos al azar acerca de BMW FAQ Club
Devolver tipos anonimos en Mono
Escrito 20-sep-2011 a las 10:30 por Danny
Etiquetas .net, anonymous type, mono, monodevelop
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.
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.
Credits goes to: http://tomasp.net/articles/cannot-return-anonymous-type-from-method.aspx
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 { get; set; }
public string Modelo { get; set; }
public string Color { get; set; }
private string _Coche;
private string _Modelo;
private string _Color;
}
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.Coche, objeto_tipado.Modelo, objeto_tipado.Color);
Console.ReadLine();
}
static T Cast<T>(object obj, T type)
{
return (T)obj;
}
Total de Comentarios 0





