У меня есть класс, который я прокси-сервер с помощью Dynamic Proxy. Я хочу добавить некоторые настраиваемые атрибуты к прокси-методам (которые не определены в прокси-классе). Это возможно.Могу ли я определить пользовательские атрибуты для прокси-типа в Castle Windsor
Я хочу это, потому что хочу сгенерировать уровень веб-API ASP.NET для уровня обслуживания моего приложения. Я проксированные службы (с наследованием от ApiController и дополнительные интерфейсы IMyService), он отлично работает, но я хочу добавить специальные атрибуты WebAPI к этому недавно созданному классу Dynamic, поэтому среда Web API может их прочитать.
EDIT:
Я хочу объяснить подробные, если кто-то хочет знать, что я хочу на самом деле.
public interface IMyService
{
IEnumerable<MyEntity> GetAll();
}
public class MyServiceImpl : IMyService
{
public IEnumerable<MyEntity> GetAll()
{
return new List<MyEntity>(); //TODO: Get from database!
}
}
public class MyServiceApiController : ApiController,IMyService
{
private readonly IMyService _myService;
public MyServiceApiController(IMyService myService)
{
_myService = myService;
}
public IEnumerable<MyEntity> GetAll()
{
return _myService.GetAll();
}
}
Думайте, что у меня есть IMyService, который реализован MyServiceImpl. И я хочу, чтобы контроллер Api мог использовать эту услугу из Интернета. Но, как вы видите, контроллер api - это просто прокси для реального обслуживания. Итак, зачем мне писать? Я могу динамически создавать его с помощью виндзора замка.
Это моя идея и почти все сделано в моем новом проекте (https://github.com/hikalkan/aspnetboilerplate). Но что, если мне нужно добавить некоторый атрибут (например, Authorize) в метод GetAll для контроллера api. Я не могу добавить, так как нет такого класса, это динамический прокси-замок.
Итак, помимо этой проблемы. Я хочу знать, можно ли добавить атрибут к методу синтаксического прокси-класса.
ли Web API действительно читать эти атрибуты ? То, что я привык с MVC, состоит в том, что только базовый класс 'Controller' читает атрибуты на своих производных классах, поэтому вы можете безопасно обернуть такой класс, поскольку MVC взаимодействует только с' IController'. Разве это не работает для Web API? Таким образом, 'ApiController' читает атрибуты, в то время как Web API взаимодействует только с' IHttpController'? В противном случае абстракция 'IHttpController' будет нарушена. – Steven
WebAPI имеет некоторые атрибуты, такие как атрибуты Authorize, FromBody и FromUri (см. Http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web- апи). Кроме того, я не могу определить такие атрибуты на моем сервисном уровне, поскольку он не зависит от уровня веб-api. Поэтому, когда я создаю динамический веб-api, мне приходится вводить эти атрибуты только что созданному веб-классу api. – hikalkan
Кроме того, я могу добавить пользовательские атрибуты к прокси-классу, методы (даже к параметрам метода) за пределами этого случая. – hikalkan