Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用任何类方法时引发事件_C#_Asp.net_Cloud - Fatal编程技术网

C# 调用任何类方法时引发事件

C# 调用任何类方法时引发事件,c#,asp.net,cloud,C#,Asp.net,Cloud,我需要在自定义记录器中记录类方法的调用。如果我有WebService类(.asmx),我可以将日志记录方法订阅到eventApplication\u BeginRequest,并记录对此web服务的web方法的每次调用。但我只有一个属性为[ServiceInfo]的简单类。当有人调用它的方法时,应用程序\u BeginRequest不会启动。我可以在所有类方法中调用logging方法,但我认为这是不正确的。那个么,当有人调用此类中的任何一个方法时,是否有任何方法可以捕获事件?谢谢您应该使用AOP

我需要在自定义记录器中记录类方法的调用。如果我有WebService类(.asmx),我可以将日志记录方法订阅到event
Application\u BeginRequest
,并记录对此web服务的web方法的每次调用。但我只有一个属性为
[ServiceInfo]
的简单类。当有人调用它的方法时,
应用程序\u BeginRequest
不会启动。我可以在所有类方法中调用logging方法,但我认为这是不正确的。那个么,当有人调用此类中的任何一个方法时,是否有任何方法可以捕获事件?谢谢

您应该使用AOP来实现这一点。一种简单的方法是从ContextBoundObject继承,详细信息请查看文章。

您应该使用AOP来实现。一种简单的方法是从ContextBoundObject继承,详细信息请查看文章。

如果我正确理解了您的问题,您正在寻找实现一种机制,当在类中调用特定方法时记录日志。尽管您可以将其添加到您提到的每个方法中,但这并不是100%正确的,有一种更好的方法可以通过实现AOP来实现

日志记录是AOP地址的一个典型示例

我以前使用过MicrosoftUnity进行拦截(见此),这将允许您装饰一个您希望拦截的类方法(即日志信息),可能是通过使用属性装饰它

e、 g


这样做的好处是,您在类实现中没有对日志记录方法的调用,您可以通过简单地删除属性来删除日志记录,或者,将日志记录代码配置为仅在特定条件下(例如,设置了配置值)执行日志记录,如果我正确理解您的问题,您希望实现一种机制,记录在类中调用特定方法的时间。尽管您可以将其添加到您提到的每个方法中,但这并不是100%正确的,有一种更好的方法可以通过实现AOP来实现

日志记录是AOP地址的一个典型示例

我以前使用过MicrosoftUnity进行拦截(见此),这将允许您装饰一个您希望拦截的类方法(即日志信息),可能是通过使用属性装饰它

e、 g

这样做的好处是,您在类实现中没有对日志方法的调用,您可以通过简单地删除属性来删除日志记录,或者将日志记录代码配置为仅在特定条件下(例如,设置配置值时)执行日志记录

[Log]
public MyMethodToLog(string x, int y)
{
   //Class Implementation
}