c# – Autofac:使用非通用接口注册泛型类型

c# – Autofac:使用非通用接口注册泛型类型,第1张

概述我正在尝试注册(作为每个请求的实例)泛型类型和非泛型接口. 在网上我发现了很多相反的例子,但没有一个. 因此,我有一个这样的类: public class UnitOfWork<TContext> : IUnitOfWork where TContext : DbContext, new() 泛型类,但非泛型接口. 在Autofac中,我试图以这种方式注册: builder.RegisterGen 我正在尝试注册(作为每个请求的实例)泛型类型和非泛型接口.
在网上我发现了很多相反的例子,但没有一个.

因此,我有一个这样的类:

public class UnitOfWork<TContext> : IUnitOfWork where TContext : DbContext,new()

泛型类,但非泛型接口.
在autofac中,我试图以这种方式注册:

builder.RegisterGeneric(typeof(UnitOfWork<>)).As<IUnitOfWork>().InstancePerhttpRequest();

但是我收到了错误:
服务“namespace.UoW.IUnitOfWork”不是开放的泛型类型定义.

当然,因为它不是.但我不知道如何注册.

谢谢.

解决方法 如果您还有通用接口,则只需要RegisterGeneric.

在您的情况下,您只有一个非通用接口IUnitOfWork,并且只有一个DbContext派生类,因此您只需注册UnitOfWork< Context>作为普通类型:

builder.RegisterType<UnitOfWork<Context>>()       .As<IUnitOfWork>().InstanceP‌​erhttp‌​Request();

因此,请求IUnitOfWork的任何类型都将获得UnitOfWork< Context>.

总结

以上是内存溢出为你收集整理的c# – Autofac:使用非通用接口注册泛型类型全部内容,希望文章能够帮你解决c# – Autofac:使用非通用接口注册泛型类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存