簡體   English   中英

使用autofac注入類型轉換工廠

[英]Injecting a type conversion factory with autofac

我試圖擺脫使用Autofac的應用程序中的服務定位器模式。 目前,我有一個這樣的課程:

class Factory {
    private readonly ILifetimeScope _scope;
    public Factory(ILifetimeScope scope) {
        _scope = scope;
    }
    public Operation CreateOperation(OperationData dto) {
        var destinationType = NameConventionLookup(dto.GetType().Name);
        return _scope.Resolve(destinationType, new TypedParameter(dto.GetType(), dto));
    }
    private Type NameConventionLookup(Type t) {
        // Return a type by removing parts of the type name and appending others
    }
}

基本上,我得到一個poco對象,並基於該對象創建另一個對象,並使用輸入作為構造函數參數。 示例類型:

class MyDto : OperationData {
    public string Foo;
    public int Bar;
}
class MyOperation : Operation {
    public MyOperation(MyDto dto) { ... }
}

我可以在工廠擺脫ILifetimeScope嗎? 我想改為使用一些工廠方法,例如Func<OperationData, Operation>之類的方法,但是Autofac可以生成此方法嗎? 我可以幫助圖書館嗎?

只要在合成根目錄中定義了您的Factory類,就沒有理由刪除對ILifetimeScope的引用,因為在這種情況下,不是Service Locator反模式 ,而僅是Mechanics

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM