c# - 清楚地说明自动注册的程序集

标签 c# .net autofac

我们的应用程序使用 Autofac 作为 IoC 容器,并利用自动注册功能为一些包含广泛使用的代码的程序集。

要引用每个程序集,通常会使用 Assembly.GetAssembly(typeof(<type>)) ,使用相应程序集中的一种类型。然而,这并不是很清楚,因为很难看出每个类型注册了哪个程序集,并且在项目之间移动类型时也可能导致错误。

为了解决这个问题,在每个有问题的程序集中,我创建了一个名为 Types 的空类那当然有程序集的命名空间,所以我可以像这样进行自动注册:

builder.RegisterAssemblyTypes(
    Assembly.GetAssembly(typeof(Xx.Common.Types)),
    Assembly.GetAssembly(typeof(Xx.Core.Types)),
    Assembly.GetAssembly(typeof(Xx.Infrastructure.Types)))
    .AsSelf()
    .AsImplementedInterfaces();

否则这当然是“死代码”。这样做是一个好主意还是“聪明”的主意,还是有更好,更惯用的主意?我是不是傻了,连问这个都懒得问?

最佳答案

我觉得你的做法其实很聪明。我采用的方法类似,但我没有创建新类型,而是指向现有类型(就像您所做的那样),但完全符合其名称,如下所示:

typeof(global::Company.Product.BusinessLayer.ICommandHandler<>).Assembly

这很清楚我们在这里针对的是业务层,如果有问题的类型被移动到另一个项目,这里将会出现编译错误。

关于c# - 清楚地说明自动注册的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419102/

相关文章:

c# - 为什么我的断点在 Visual Studio 中重复?

.net - 设计时重绘

c# - Autofac 6 - 注册一个装饰器同时实现另一个接口(interface)

c# - 由于缺少许可证,无法构建 Brew 包

C# I/O - System.IO.File 和 StreamWriter/StreamReader 之间的区别

c# - "using"语句中的灾难性故障,即 using(var a= new stream()) 和 a.Something() 抛出异常

c# - 如何填充 BrightIdeasSoftware.TreeListView ?

c# - RegEx 忽略部分字符串以提取文本

c# - 如何更改 Autofac 中具有较长生命周期的对象中的值?

asp.net - Autofac 与 MVC4 : controller does not have a default constructor