Lor*_*eno 2 c# ioc-container inversion-of-control autofac
AutoFac 允许您使用 注册泛型类builder.RegisterGeneric(Type type),但它不接受构造参数。该方法的描述甚至说:
注册一个非参数化的通用类型
但是,如果我有一个由 Service 实现的通用接口 IService,需要一些参数怎么办?
目前我已经这样注册了:
builder.Register(c =>
new Service<Class1>(
parameter1,
parameter2))
.As<IService<Class1>>();
Run Code Online (Sandbox Code Playgroud)
在注册时,我必须指定 T 的确切类型(在本例中为 Class1)。我可以更通用地进行操作,以便我可以为任何 T 提供一个注册吗?
所有内容都记录在这里:https://autofaccn.readthedocs.io/en/latest/register/parameters.html
基本上,你可以继续使用RegisterGeneric并使用WithParameter
builder.RegisterGeneric(typeof(Service<>))
.WithParameter("nameOfParam1", parameter1)
.WithParameter("nameOfParam2", parameter2)
.As(typeof(IService<>));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |