Синтаксис анонимных типов - PullRequest
1 голос
/ 15 февраля 2011

Я знаю, что мы можем использовать такой синтаксис

var r = new MyType { name = "dd"}

Возможно ли иметь такой синтаксис любым более простым способом

MyType myType = GetMyType("some method returns instance of mytype"){
       name="myname", 
       otherProp = otherPro, 
       ExecuteMyTypeMethod()
    };

1 Ответ

2 голосов
/ 15 февраля 2011

Обратите внимание, что вы показали , а не анонимные типы, такие как:

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();
});

Преимущество * в том, что вывсе еще может выполнить инициализацию в одном эксперименте.Обычно я предпочитаю использовать отдельные операторы.

...