Skip to content

Component Resolution

Marty Mathis edited this page Jan 20, 2019 · 7 revisions

Pipelines are constructed using a set of components that are resolved using implementations of the following interface:

    public interface IPipelineComponentResolver
    {
        T GetInstance<T>(string name) where T : IPipelineComponent;
    }

The core framework only provides one implementation for IPipelineComponentResolver out of the box. If you would like to use an IOC container for component resolution, please visit the Pipeline Framework Dependency Injection site.

Both pipeline types AsyncPipeline<T> and Pipeline<T> provide two constructors which can be used to construct pipelines.

     public AsyncPipeline(
        IPipelineComponentResolver resolver,
        IEnumerable<string> componentNames,
        IDictionary<string, IDictionary<string, string>> settings)

     public AsyncPipeline(
        IPipelineComponentResolver resolver,
        IEnumerable<Type> componentTypes,
        IDictionary<string, IDictionary<string, string>> settings)

and

     public Pipeline(
        IPipelineComponentResolver resolver,
        IEnumerable<string> componentNames,
        IDictionary<string, IDictionary<string, string>> settings)

     public Pipeline(
        IPipelineComponentResolver resolver,
        IEnumerable<Type> componentTypes,
        IDictionary<string, IDictionary<string, string>> settings)

The first argument, IPipelineComponentResolver, is used to resolve any components that are requested. The second argument, IEnumerable<string> or IEnumerable<Type>, is used to instruct the resolver which components should be resolved and in what order. The third argument, IDictionary<string, IDictionary<string, string>>, provides configuration settings to the components.

When using IEnumerable<string> type as second argument, the framework will use each string as an argument to the resolver method T GetInstance<T>(string name) directly. When using IEnumerable<Type>, the framework will use Name property of each Type.

Clone this wiki locally