如果是Action类型,如何执行resolve参数?
addToOrder: function () { //this is the function that will need to update my parent element.
this.pizza = {'ADD': true,
'CODE':this.pizza.CODE,
'GARNISHES':this.pizza.GARNISHES};
this.fire('selectPage',4);
console.log("SENT CHANGES");
console.log(this.pizza);
},
NamedParameter和TypedParameter不起作用
答案 0 :(得分:1)
首先,您不应该像使用Program.Container
属性那样公开容器,并解决依赖关系。这是Service Locator的典型示例,它被认为是反模式。但是如果你真的需要或想要这样做,你的代码应该是这样的:
public void Connect()
{
Action action = Connect;
Program.Container.Resolve<ITaskWrapper>(new NamedParameter("action", action));
}
更好的方法是使用依赖注入如何使用 - 注入依赖项。
public class Connector : IConnector
{
public Connector(Func<Action, ITaskWrapper> taskWrapperFactory)
{
var taskWrapper = taskWrapperFactory(Connect);
}
private void Connect()
{
}
}
public class TaskWrapper : ITaskWrapper
{
private readonly Action _task;
public TaskWrapper(Action task)
{
_task = task;
}
}
您可以将与连接相关的方法移动到某个类,例如Connector
,并在构造函数中注入TaskWrapper
。使用Func<>
可以创建实例并传递不可解析的参数。
此外,您应该使用适当的接口来解析/注入依赖项,而不是直接使用类型,因为您完全忽略了松散耦合组件的整体概念。