我有一个类,我用 Castle Dynamic Proxy 代理它。我想向代理方法(未在代理类中定义)添加一些自定义属性。这可能吗。
我想要这个,因为我想为我的应用程序的服务层生成 ASP.NET Web API 层。我代理了服务(从 ApiController 和其他 IMyService 接口继承),它工作得很好,但我想将 WebAPI 特定属性添加到这个新创建的 Dynamic 类,因此 Web API 框架可以读取它们。
编辑:
如果有人想知道我实际上想要什么,我想详细解释一下。
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();
}
}
认为我有一个由 MyServiceImpl 实现的 IMyService。我想制作一个 Api 控制器,以便能够从 Web 使用此服务。但是如你所见,api 控制器只是真实服务的代理。那么,我为什么要写它呢?我可以使用城堡温莎动态创建它。
这是我的想法,几乎在我的新项目(https://github.com/hikalkan/aspnetboilerplate)中完成了。但是,如果我需要在 api 控制器的 GetAll 方法中添加一些属性(例如 Authorize)怎么办。由于没有这样的类,我不能直接添加,它是城堡动态代理。
所以,除了这个问题。我想知道是否可以将属性添加到同步代理类的方法中。