Обратите внимание, что вы показали , а не анонимные типы, такие как:
var r = new { name = "dd" }; // Note the lack of a type name
Это инициализатор объекта синтаксис - и нет,это работает только с конструкторами.Я иногда обнаруживал, что это тоже боль, но это так.
РЕДАКТИРОВАТЬ: Комментарий предложил использовать методы расширения.Вы могли бы сделать это:
public static T With<T>(this T item, Action<T> action) where T : class
{
action(item);
return item;
}
, в этот момент вы могли бы написать:
MyType myType = GetMyType("some method returns instance of mytype").With(t => {
t.name="myname";
t.otherProp = otherPro;
t.ExecuteMyTypeMethod();
});
Преимущество * в том, что вывсе еще может выполнить инициализацию в одном эксперименте.Обычно я предпочитаю использовать отдельные операторы.