问题描述
ProjectLombok @With注释是否有C#替代方法?
我想使用一些方便的方法来编写测试数据集,而无需进行太多编码。
解决方法
C#9将在没有任何外部库或IL编织的情况下原生支持此功能。
名为“ records”的新功能支持一个名为“ with-expressions”的子功能,该功能完全可以做到这一点:
Person brother = person with { FirstName = "Paul" };
此行从person
变量创建一个新对象,该对象具有完全相同的数据,但FirstName
设置为指定值。
Source,并提供了更好的解释。
, C#9为此目的支持record
。
早期版本中没有开箱即用的解决方案,因此您可能要使用3rd party库。例如。 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");