C# 方法语法类似于对象初始值设定项

C# method syntax similar to object initializer

我们有一个扩展方法,它接受一个动作来初始化一个对象。 有没有办法改进这种调用的语法:

public static T NewRow<T>(this IUow uow, Action<T> action();

// this does internally call
public T NewRow<T>(Action<T> initializer) where T : IBo
{
    T bo = NewRow<T>();
    initializer.Invoke(bo);
    return bo;
}

uow.NewRow<ICustomer>(customer => { 
        customer.Name = "Zzz";
        customer.Info = "Abc"
);

我想也许我可以使用类似于对象初始化语法的东西?

uow.NewRow<ICustomer>({ 
      Name: "Zzz",
      Info: "Abc"
});

想法是在每一行中去掉 customer.* = ...

我很乐意提供任何小费。

信息:

编辑:

一个Action可以是一切,而不只是一个简单的赋值。因此,如果客户选择制作 function-call,那么这里实际上没有什么可以走捷径的。例如看这个:

uow.NewRow<IWhatever>(() => Console.WriteLine("tataaaa"););

所以不,你想要的是不可能的。

但是您可以创建某种 EventsArgs 来保存您的名字并在您的 NewRow 方法中使用这些名字。如果所有这些回调实际上应该只是 assignement-calls 一起。

,则无需执行任何操作
uow.NewRow<ICustomer>(new MyArgs { 
    Name = "Zzz",
    Info = "Abc"
});

并在 NewRow 内:

public T NewRow<T>(MyArgs args) where T : IBo 
{
    customer.Name = args.Name;
    customer.Info = args.Info;
}