C# 面向方面编程在Web服务中的应用

C# 面向方面编程在Web服务中的应用,c#,.net,web-services,aop,C#,.net,Web Services,Aop,我正在寻找一种将AOP概念应用于web服务的方法。创建一个普通类很容易做到这一点 示例MyClass MyClass NewClass = MyProxyClassManager.CreateNewAOPClass(typeof(MyClass)); 通常,您可以通过这种方式创建类的新实例 MyClass NewClass = new MyClass(); 要使用AOP创建该类的实例及其周围的方面,通常需要一个库来指定类类型和要应用的方面 示例MyClass MyClass NewClas

我正在寻找一种将AOP概念应用于web服务的方法。创建一个普通类很容易做到这一点

示例MyClass

MyClass NewClass = MyProxyClassManager.CreateNewAOPClass(typeof(MyClass));
通常,您可以通过这种方式创建类的新实例

MyClass NewClass =  new MyClass();
要使用AOP创建该类的实例及其周围的方面,通常需要一个库来指定类类型和要应用的方面

示例MyClass

MyClass NewClass = MyProxyClassManager.CreateNewAOPClass(typeof(MyClass));
但是,在尝试为附加到Web服务的类执行此操作时,这是一个挑战。 我需要一种方法,可以基于web服务类返回代理类,而不是返回附加到web服务的普通类

顺便说一句:我正在使用castle项目申请AOP。

我不确定您是否有完整的技术堆栈,但通过WebAPI,您可以创建自定义的DelegatingHandler来包装服务调用。有关更多详细信息,请参阅

示例处理程序:

public class MessageHandler1 : DelegatingHandler
{
    protected async override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        Debug.WriteLine("Process request");
        // Call the inner handler.
        var response = await base.SendAsync(request, cancellationToken);
        Debug.WriteLine("Process response");
        return response;
    }
}