Появилась идея макроса. Или расширения для макроса Record
Что-то вроде такого:
[Record(Makers=true)]
struct A
{
public readonly Field1: int;
public readonly Field2: string;
}
превращается в
struct A
{
public Field1: int;
public Field2: string;
public this(Field1: int, Field2: string)
{
this.Field1 = Field1;
this.Field2 = Field2;
}
public withField1(Field1: int): A
{
A(Field1, this.Field2)
}
public withField2(Field2: string): A
{
A(this.Field1, Field2)
}
}
применяетя примерно так:
def MakeA()
{
def MakeOtherA()
{
A(1, "alpha")
}
MakeOtherA().withField1(5)
}