[英]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.