19

Project Lombok使得在类中实现样板代码变得很简单。.NET 属性有可能吗?那里有.net 端口吗?

4

3 回答 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 回答