我的配置,我需要註冊兩個控制器,只是:簡單的注射器:註冊收藏時壓倒一切的生活方式?
public class DataApiController : ApiController
{
readonly Data _data;
readonly MongoRepo _mongoRepo;
readonly JobManager _jobManager;
readonly QueueManager _queueManager;
public DataApiController(QueueManager queueManager,
MongoRepo mongoRepo, JobManager jobManager, Data data)
{
_queueManager = queueManager;
_mongoRepo = mongoRepo;
_jobManager = jobManager;
_data = data;
}
...
}
,另一個也使用ApiController
。我需要將它們註冊爲一個集合,我做的正是如此:
var types = new[] { typeof(DataApiController), typeof(BatchApiController) };
container.RegisterCollection<ApiController>(
from type in types
select Lifestyle.Transient.CreateRegistration(type, container));
雖然這工作,我得到的錯誤,所需要的瞬態設置是錯誤的,因爲IDisposable
。 OK,我得到的,我看到,有登記的單個項目時讓周圍一個例子:
public static void RegisterDisposableTransient<TService, TImplementation>(
this Container container)
where TImplementation : class, IDisposable, TService
where TService : class
{
var scoped = Lifestyle.Scoped;
var reg = Lifestyle.Transient.CreateRegistration<TService, TImplementation>(container);
reg.SuppressDiagnosticWarning(DiagnosticType.DisposableTransientComponent,
"suppressed.");
container.AddRegistration(typeof(TService), reg);
container.RegisterInitializer<TImplementation>(
o => scoped.RegisterForDisposal(container, o));
}
有沒有覆蓋的錯誤抑制的收藏?我無法得到任何可以抑制診斷警告的工作,就像容器被驗證時那樣被忽略,並且我總是收到有關Transient和IDisposable
的錯誤/警告。我怎樣才能註冊一個集合,讓容器知道我得到它,我需要壓制這個錯誤?註冊上面的RegisterDisposableTransient
的單個API控制器可以正常工作,但由於一個服務上有兩個實現,因此我需要使用該集合。
你如何解決控制器的集合:
如果這兩個ApiControllers不使用
RegisterWebApiControllers
(也許是因爲他們在不同的組件),下面會做的伎倆,以及註冊? – qujck