Project Lombok使得在类中实现样板代码变得很简单。.NET 属性有可能吗?那里有.net 端口吗?
问问题
10500 次
3 回答
6
那么在 Lombok 中,Java 类可能看起来像这样
import lombok.Data;
@Data public class Cart {
private int id;
private DateTime created;
private int items;
private int status;
}
而在 C# 中,同一个类看起来像这样
public class Cart {
public int Id { get; set; }
public DateTime Created { get; set; }
public int Items { get; set; }
public int Status { get; set; }
}
因此,在没有任何其他库的情况下,C#(本例中为 3.0)变得相当接近,但是当您开始将“final”添加到某些属性时,Lombok 的神奇“自动构造函数”部分确实会发光。至于.Net 替代方案,据我了解,.Net 注释不提供在字节码进入编译器之前拦截字节码的能力(Lombok 使用的效果如此之好),因此您的选择仅限于某些模板系统 + 像 nAnt 这样的构建脚本。这将是一团糟。
于 2010-12-10T01:01:26.603 回答
3
现在有一个.NET 端口!查看Lombok.NET。
免责声明:我是这个库的作者。
于 2021-11-09T19:00:16.550 回答
0
我会说:
public class Cart {
public int Id { get; set; }
public DateTime Created { get; set; }
public int Items { get; set; }
public int Status { get; set; }
}
var cart = new Cart
{
Id = 10,
DateTime = DateTimeNow,
....
};
本身不需要任何构建器。只需使用 c# 对象初始化程序?也就是说,它没有隐藏任何实现的东西。因此,如果您想将一些更复杂的 init 数据“分解”到您的 init 中,您可以将其隐藏在构建器中,但不能直接隐藏在对象初始化器中。你必须把它放在 getter 或 helper 类的某个地方。顺便说一句,Lombok java 生成器也不行。并且对象初始化器也不做任何流畅的东西,比如 .id(..).name() 等。
于 2020-03-16T12:25:43.737 回答