簡體   English   中英

Autofac 通用委托工廠

[英]Autofac generic delegate factory

我想為所有類型或 class 注冊一個通用委托工廠:有辦法嗎? 在一個解決方案下,一次注冊一個類型/類......不是很好,還有其他方法嗎?

    public class Foo<T>

    {

        public string Name { get; set; }

        public T Value;

    }

    public class FooBuilder<T>

    {

        public Foo<T> Build(string name)

        {

            return new Foo<T> { Name = name };

        }

    }


    public delegate Foo<T> FooFactory<T>(string name);



    public static void TestFoo()

    {

        var builder = new ContainerBuilder();

        builder.RegisterType<FooBuilder<double>>();

        builder.Register<FooFactory<double>>(c =>    c.Resolve<FooBuilder<double>>().Build);

        IContainer container = builder.Build();

        var foo1 = container.Resolve<FooFactory<double>>()("foo1");

    }

您可以將“開放泛型”注冊為提供服務。 對於您的示例:

var builder = new ContainerBuilder();

// This registers an open generic that can provide all FooBuilder<T>.
builder.RegisterGeneric(typeof(FooBuilder<>));

var container = builder.Build();

// Resolve the builder directly...
var fooBuilder = container.Resolve<FooBuilder<double>>();

// ...or get a factory method if that's what you need
var fooBuilderFactory = container.Resolve<Func<FoodBuilder<double>>>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM