Этого можно достичь с помощью API Conventions .Он был разработан для поддержки именно этого типа сценария:
https://github.com/microsoft/aspnet-api-versioning/wiki/API-Version-Conventions
Это будет работать только на closed-generics , но это не должно быть слишком много работычтобы это произошло.Вот несколько основных примеров:
// typed, closed generic
options.Conventions.Controller<GenericController<PlugIn1>>().HasApiVersion(1,0);
// untyped, closed generic
var controllerType = typeof(GenericController<>).MakeGenericType(new []{typeof(PlugIn1)});
options.Conventions.Controller(controllerType).HasApiVersion(1,0);
Вы также можете создавать свои собственные пользовательские соглашения, такие как IControllerConvention .Этот подход может быть использован для версии всех контроллеров, которые наследуются от GenericController<>
.Тогда вам просто нужно добавить это к соглашениям, как это:
options.Conventions.Add(new PlugInControllerConvention());
Надеюсь, этого достаточно, чтобы вы начали.Не стесняйтесь задавать больше вопросов.