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