protected TPluginType GetInstance <TPluginType>() { ExplicitArgsExpression expression = ObjectFactory.With(_unitOfWork); injectedInstances.Keys.ForEach(type => { expression = expression.With(type, injectedInstances[type]); }); return(expression.GetInstance <TPluginType>()); }
public object GetInstance(Type type, params IResolutionArgument[] parameters) { ExplicitArgsExpression expression = null; if (parameters.OfType <ConstructorParameter, IResolutionArgument>().Length > 0) { ConstructorParameter parameter1 = parameters.OfType <ConstructorParameter, IResolutionArgument>()[0]; expression = container.With(parameter1.Name).EqualTo(parameter1.Value); if (parameters.Length > 1) { ConstructorParameter[] constructorArgs = parameters.OfType <ConstructorParameter, IResolutionArgument>(); for (int i = 1; i < constructorArgs.Length; i++) { expression.With(constructorArgs[i].Name).EqualTo(constructorArgs[i].Value); } } } return(expression != null?expression.GetInstance(type) : container.GetInstance(type)); }
public void Add <TTask>() where TTask : IQueueableTask { _queueableTaskManager.Add(_expression.GetInstance <TTask>()); }