2014-06-25 15 views
4

我們的應用程序使用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(); 

這是當然「死碼」否則。這樣做是一種好的或「聰明」的想法,還是有更好,更習慣的想法?我甚至不敢問這個問題?

回答

3

我想你在做什麼其實很聰明。我採取的方法是相似的,但不是創建一個新的類型,我點在現有類型(像你這樣),但充分的質量它的名字,如下:

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

這使得它可以很清楚的,我們在這裏將業務層作爲目標,如果有問題的類型被移動到另一個項目,這裏會出現編譯錯誤。