o..*_*..o 6 c# generics interface autofac
我正在尝试注册(作为每个请求的实例)泛型类型和非泛型接口.在网上我发现了很多相反的例子,但没有一个.
因此,我有一个这样的类:
public class UnitOfWork<TContext> : IUnitOfWork where TContext : DbContext, new()
Run Code Online (Sandbox Code Playgroud)
泛型类,但非泛型接口.在Autofac中,我试图以这种方式注册:
builder.RegisterGeneric(typeof(UnitOfWork<>)).As<IUnitOfWork>().InstancePerHttpRequest();
Run Code Online (Sandbox Code Playgroud)
但我收到错误: 服务'Namespace.UoW.IUnitOfWork'不是一个开放的泛型类型定义.
当然,因为它不是.但我不知道如何注册.
谢谢.
只有RegisterGeneric您还拥有通用接口时才需要.
在您的情况下,您只有一个非泛型接口IUnitOfWork,并且只有一个DbContext派生类,因此您可以将您的注册UnitOfWork<Context>作为普通类型注册:
builder.RegisterType<UnitOfWork<Context>>()
.As<IUnitOfWork>().InstanceP??erHttp??Request();
Run Code Online (Sandbox Code Playgroud)
所以你的任何类型的请求IUnitOfWork都会得到一个UnitOfWork<Context>.
| 归档时间: |
|
| 查看次数: |
6183 次 |
| 最近记录: |