使用表达式创建对象的实例



我有这个类

public class TableSettings
{
public string TableCssClass
{
get;
set;
}
public string EditAction
{
get;
set;
}
}

我希望能够通过参数发送这个对象的实例,这样做:

, tableSettings => {
tableSettings.TableCssClass = "table";
tableSettings.EditAction = "action";
});

此lambda没有创建对象。

像这样的lambda用于配置已经创建的对象,而不是创建新的实例。当您在.NET Core示例中看到这样的代码时,logging实例是在AddLogging本身内部创建的:

services.AddLogging(logging => 
{
logging.SetMinimumLevel(LogLevel.Warning)
.AddConsole();
})

如果您检查AddLogging的源代码,您会看到它创建了一个新的LoggingBuilder实例,并将其作为参数传递给lambda:

public static IServiceCollection AddLogging(this IServiceCollection services, 
Action<ILoggingBuilder> configure)
{
...
configure(new LoggingBuilder(services));
return services;
}

为什么要使用lambda来创建Object?您可以像下面的例子一样构造对象。

, new ObjectName {
Property1 = value1,
Property2 = value2
});

最新更新