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

时间:2014-06-25 21:42:58

标签: 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();

这当然是#34;死代码&#34;除此以外。这是一个好的或聪明的&#34;这样做的想法,还是有更好的,更惯用的?我是否因为打扰这个问题而愚蠢?

1 个答案:

答案 0 :(得分:3)

我认为你所做的实际上非常聪明。我采用的方法是类似的,但我没有创建一个新类型,而是指向一个现有的类型(就像你做的那样),但它的名称完全是如此,如下所示:

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

这清楚地表明我们在这里定位业务层,如果有问题的类型被移动到另一个项目,那么这里会出现编译错误。