を短い答えは:はい、それは動作します次のようにSimpleInjectorHttpDependencyResolver
を登録することができ
var services = GlobalConfiguration.Configuration.Services;
var controllerTypes = services.GetHttpControllerTypeResolver()
.GetControllerTypes(services.GetAssembliesResolver());
foreach (var controllerType in controllerTypes)
{
container.Register(controllerType);
}
。次のコードスニペットを使用することができ、APIコントローラであなたのタイプにアクセスするには
var container = new Container();
//Register you types in container here
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.RegisterMvcAttributeFilterProvider();
var controllerTypes =
from type in Assembly.GetExecutingAssembly().GetExportedTypes()
where typeof(ApiController).IsAssignableFrom(type)
where !type.IsAbstract
where !type.IsGenericTypeDefinition
where type.Name.EndsWith("Controller", StringComparison.Ordinal)
select type;
foreach (var controllerType in controllerTypes)
{
container.Register(controllerType);
}
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
::以下は、(部分的に上記のスティーブンの応答に基づいて)のWeb APIとMVC4両方のコントローラで私のプロジェクトのために動作するコードスニペットです
DependencyResolver.Current.GetService<InterfaceName>()
Simple Injector 2.5には[Web API統合パッケージ](https://simpleinjector.codeplex.com/wikipage?title=Web%20API%20Integration)が含まれています。 – Steven