C# Autofac通用代理工厂
我想为所有类型或类注册一个泛型委托工厂:有办法吗?下面是一个一次注册一个类型/类的解决方案。。。。不是很好还有别的办法吗C# Autofac通用代理工厂,c#,autofac,C#,Autofac,我想为所有类型或类注册一个泛型委托工厂:有办法吗?下面是一个一次注册一个类型/类的解决方案。。。。不是很好还有别的办法吗 public class Foo<T> { public string Name { get; set; } public T Value; } public class FooBuilder<T> { public Foo<T> Buil
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");
}
公共类Foo
{
公共字符串名称{get;set;}
公共价值观;
}
公共类FooBuilder
{
公共Foo生成(字符串名称)
{
返回新的Foo{Name=Name};
}
}
公共委托Foo FooFactory(字符串名称);
公共静态void TestFoo()
{
var builder=new ContainerBuilder();
RegisterType();
注册(c=>c.Resolve().Build);
IContainer容器=builder.Build();
var foo1=container.Resolve()(“foo1”);
}
您可以将“开放泛型”注册为提供服务。例如:
var builder=newcontainerbuilder();
//这注册了一个可以提供所有FooBuilder的开放泛型。
builder.RegisterGeneric(typeof(foodbuilder));
var container=builder.Build();
//直接解析生成器。。。
var fooBuilder=container.Resolve();
//…如果你需要的话,也可以用工厂方法
var fooBuilderFactory=container.Resolve();
您可以将“开放泛型”注册为提供服务。例如:
var builder=newcontainerbuilder();
//这注册了一个可以提供所有FooBuilder的开放泛型。
builder.RegisterGeneric(typeof(foodbuilder));
var container=builder.Build();
//直接解析生成器。。。
var fooBuilder=container.Resolve();
//…如果你需要的话,也可以用工厂方法
var fooBuilderFactory=container.Resolve();