Учитывая ваше новое описание проблемы, как об этом:
Обратите внимание, что он также меняет a
(как и ваш код), * 1004 * не создает копию . Если вам нужна копия, используйте решение Одеда.
public class test
{
public string aa { get; set; }
public string bb { get; set; }
public string cc { get; set; }
public test AlterTest(Action<test> alteration)
{
alteration(this);
return this;
}
}
static void Main(string[] args)
{
var a = new test
{
aa = "a",
bb = "b"
};
var d = a.AlterTest((t) => t.cc = "c");
}
Я бы сказал, что он не так удобен для чтения, как ваш исходный код (поскольку вам нужно знать, что делает AlterTest
, что немного).