ProjectLombok 的 C# 替代方案 - "Immutable setter"
C# alternative for ProjectLombok - "Immutable setter"
ProjectLombok @With 注释是否有一些 C# 替代方案?
我想使用一些方便的方法来准备测试数据集,而不需要太多编码。
C# 9 将原生支持此功能,无需任何外部库或 IL 编织。
名为“records”的新功能支持名为“with-expressions”的 sub-feature,它的作用恰恰是:
Person brother = person with { FirstName = "Paul" };
此行从 person
变量创建一个新对象,所有数据完全相同,但 FirstName
设置为指定值。
Source 有更好的解释。
C# 9 为此目的支持 record
。
早期版本中没有开箱即用的解决方案,因此您可能需要使用 3rd 方库。例如。 https://github.com/ababik/Remute
如果您必须在 C# 9 中处理嵌套记录,它也很方便。
record Address(string Street, string State);
record Person(string FirstName, string LastName, Address Address);
var person1 = new Person(...);
var person2 = person.With(x => x.Address.Street, "new street");
ProjectLombok @With 注释是否有一些 C# 替代方案?
我想使用一些方便的方法来准备测试数据集,而不需要太多编码。
C# 9 将原生支持此功能,无需任何外部库或 IL 编织。
名为“records”的新功能支持名为“with-expressions”的 sub-feature,它的作用恰恰是:
Person brother = person with { FirstName = "Paul" };
此行从 person
变量创建一个新对象,所有数据完全相同,但 FirstName
设置为指定值。
Source 有更好的解释。
C# 9 为此目的支持 record
。
早期版本中没有开箱即用的解决方案,因此您可能需要使用 3rd 方库。例如。 https://github.com/ababik/Remute
如果您必须在 C# 9 中处理嵌套记录,它也很方便。
record Address(string Street, string State);
record Person(string FirstName, string LastName, Address Address);
var person1 = new Person(...);
var person2 = person.With(x => x.Address.Street, "new street");