关于AutoFac的疑惑

Logerlink 2018-07-11 09:27:51
正常实例化容器
各调用如下

private IBannerService bannerService = Container.Resolve<IBannerService>();

private IFriendLinkService friendLinkService = Container.Resolve<IFriendLinkService>();


上面是可以正常使用的,但是每当添加一次对象的service都要在Initialise添加一句
builder.RegisterType<xxxx>().As<Ixxxx>().InstancePerLifetimeScope();
现在就想问一下大神,有没有办法将Initialise的部分进一步简化
谢谢参与
...全文
201 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Logerlink 2018-07-12
  • 打赏
  • 举报
回复
引用 5 楼 m0_37863265 的回复:
[quote=引用 4 楼 Logerlink 的回复:]
[quote=引用 2 楼 m0_37863265 的回复:]
去掉if语句,直接Inittialise(T,TI);或许可以

还是一样,还是报错,service没注册
[/quote]
我试过可以,虽然我用的是Unity,但是原理一样,代码是这样的。
[/quote]
嗯嗯 确实是可以的
不知道我昨天漏了哪个,跑不通,今天重新整理居然又跑通了
谢谢指点
Logerlink 2018-07-11
  • 打赏
  • 举报
回复
引用 2 楼 m0_37863265 的回复:
去掉if语句,直接Inittialise(T,TI);或许可以

还是一样,还是报错,service没注册
奇诺比奥 2018-07-11
  • 打赏
  • 举报
回复
builder 也要写成static
奇诺比奥 2018-07-11
  • 打赏
  • 举报
回复
去掉if语句,直接Inittialise(T,TI);或许可以
Logerlink 2018-07-11
  • 打赏
  • 举报
回复
有试过用“泛型”,不过只对第一个对象起作用,往后的对象皆报错“service没注册”The requested service 'IFriendLinkService' has not been registered......
控制器调用如下

private IBannerService bannerService = Container.Resolve<BannerService, IBannerService>();

private IFriendLinkService friendLinkService = Container.Resolve<FriendLinkService, IFriendLinkService>();



奇诺比奥 2018-07-11
  • 打赏
  • 举报
回复
引用 4 楼 Logerlink 的回复:
[quote=引用 2 楼 m0_37863265 的回复:]
去掉if语句,直接Inittialise(T,TI);或许可以

还是一样,还是报错,service没注册
[/quote]我试过可以,虽然我用的是Unity,但是原理一样,代码是这样的。
public class Container
{
static IUnityContainer container = new UnityContainer();//创建容器

public static IT Resolve<IT, T>() where T : IT
{
IUnityContainer con = new UnityContainer();
try
{
container.RegisterType<IT, T>();//注册
}
catch (System.Exception ex)
{
throw new System.Exception("IOC实例化出错!" + ex.Message);
}

return container.Resolve<IT>();
}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧