IOC容器能否取代CreateInstance反射代码?

3

我有一个类似于这个问题中展示的设置,想知道是否可以用一个IOC容器来替换所有使用反射查找某种类型插件并执行CreateInstance代码的操作,例如:

builder.RegisterAssemblyTypes(typeof(MyType).Assembly)
1个回答

1

是的,你可以像这样做:

builder.RegisterAssemblyTypes(typeof(MyType).Assembly).AsImplementedInterfaces();

AsImplementedInterfaces是做什么的?该项目具有遗留代码,因此不会使用接口构造函数,并将具体实现一些接口。 - Jon
从Autofac的文档中:指定扫描程序集中的类型被注册为提供其实现接口的所有内容。 - Mark Seemann
如果类没有接口构造函数,它们会被忽略吗?只是试图最小化影响! - Jon
@Jon - 除了 AsImplementedInterfaces,你还可以添加 .AsSelf()。这样,容器将能够解析服务作为它们实现的任何接口以及它们的具体类。 - Peter Lillevold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接