この質問にタイトルを付ける方法が正確にわからないので、タイトルがうまくいくことを願っています。
問題は、メソッド呼び出しで暗黙の型構文に似たものを使用できるかどうかです。たとえば、これは私が参照している暗黙的な型の構文です。
var x = new Y(){Foo = "Bar", Id = 1};
そして、私はこのようなことをしたい:
var x = myInstance.CreateItem(){Foo = "Bar", Id = 1};
このようなものをサポートする C# はありますか? 私はしたくない:
x.Foo = "Bar";
x.Id = 1;
...
CreateItem は動的な型を返すことに注意してください。CreateItem メソッドとそのクラスは変更できません。
VB の With ステートメントに似たもので解決します。
前もって感謝します。
更新: マーク ブラケットの解決策を試みると、次のコードが得られました。
TaskItem item = outlook.CreateItem(OlItemType.olTaskItem)._((Action<dynamic>)(i =>
{
i.Subject = "New Task";
i.StartDate = DateTime.Now;
i.DueDate = DateTime.Now.AddDays(1);
i.ReminderSet = false;
i.Categories = "@Work";
i.Sensitivity = OlSensitivity.olPrivate;
i.Display = true;
}));
...
public static class Extension
{
public static T _<T>(this T o, System.Action<dynamic> initialize) where T : class
{
initialize(o);
return o;
}
}
唯一の問題は、次のエラーが発生するため、拡張メソッドが System._ ComObject にバインドされていないように見えることです: System. _ComObject' には '_' の定義が含まれていません。