C# 从操作中获取对象

C# 从操作中获取对象,c#,C#,我有一个类对它的构造函数执行操作。我希望类字段_options值成为该操作的值 我尝试使用: _options = options; 但这并不适用于编译。完整代码为: public class PortableObjectTemplate { private PortableObjectTemplateOptions _options { get; set; } public PortableObjectTemplate(Action<PortableObjectTempla

我有一个类对它的构造函数执行操作。我希望类字段_options值成为该操作的值

我尝试使用:

_options = options;
但这并不适用于编译。完整代码为:

public class PortableObjectTemplate {

  private PortableObjectTemplateOptions _options { get; set; }

  public PortableObjectTemplate(Action<PortableObjectTemplateOptions> options) {
    _options = options;
  }
}

如何执行此操作?

如注释中所述,
操作
是一个完全不返回任何内容的委托(或
无效
)。当您希望您的委托返回任何内容时,应改用并执行:

或者:

options = options == null ? default(PortableObjectTemplate) : options();

试试这个。创建一个新实例并将其传递给Invoke,Invoke将设置所有属性

public PortableObjectTemplate(Action<PortableObjectTemplateOptions> options) {

     var newOptions = new PortableObjectTemplateOptions();
    _options = options.Invoke(newOptions);

什么是
操作
操作
无效,不能返回值。你应该使用
Func
@PatrickHofman抱歉,我更新了代码。我在不知道代理签名和/或确切的编译器错误的情况下尝试了_options=options,无法猜测您的问题是什么。@HimBromBeere我更新了代码,以显示我试图通过和操作初始化类的选项值的一种方法。
options?.Invoke()
。注意:当您知道答案时,不要把它写在评论中。:-+从我这里得到1。
_options = options?.Invoke();
options = options == null ? default(PortableObjectTemplate) : options();
public PortableObjectTemplate(Action<PortableObjectTemplateOptions> options) {

     var newOptions = new PortableObjectTemplateOptions();
    _options = options.Invoke(newOptions);
     options.Invoke(_options);
  }