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