2014-02-28 48 views
0

我試圖擺脫使用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可以生成這個?我可以幫助圖書館做到這一點嗎?

回答