2010-10-18 14 views

Respuesta

4

bien en Lombok una clase Java podría tener este aspecto

import lombok.Data; 

@Data public class Cart { 
    private int id; 
    private DateTime created; 
    private int items; 
    private int status; 
} 

Mientras que en C# la misma clase se vería así

public class Cart { 
    public int Id { get; set; } 
    public DateTime Created { get; set; } 
    public int Items { get; set; } 
    public int Status { get; set; } 
} 

Así C# (3,0 en este ejemplo) obtiene más bien estrecha y sin cualquier otra biblioteca, pero cuando comienzas a agregar "final" a algunas propiedades, la parte mágica de "auto constructor" de Lombok realmente brilla. En cuanto a una alternativa de .Net, según entiendo, las anotaciones de .Net no proporcionan la capacidad de interceptar el código de bytes antes de que vaya al compilador (lo que Lombok usa con gran efecto), por lo que sus opciones están limitadas a alguna plantilla sistema + un script de compilación como nAnt. Esto sería un desastre para mantener.

+0

No se puede interceptar la generación de código de bytes, pero hay algunas bibliotecas bastante sofisticadas para analizar los ensamblados finales. Puede usar campos públicos en el código y luego realizar un paso posterior a la creación reescribir todos los ensamblados involucrados para usar las propiedades generadas automáticamente. Pero no podrás lograr todo lo que hace Lombok con esta técnica. Mejor usar algo como T4 (generación de código) y clases parciales. –

+3

@Jason su código C# no es realmente equivalente al código de Java: equals y hashCode faltan. Lombok también genera eso. – Jirka

+1

Eso es verdad. Ha pasado bastante tiempo desde que escribí esa respuesta. He aprendido mucho más desde entonces, pero creo que mi punto aún se mantiene. Eso Lombok hace mucho automáticamente y el método que utiliza es (aún) exclusivo de Java. –

Cuestiones relacionadas