Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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#_.net - Fatal编程技术网

C# 使用属性读取方法参数

C# 使用属性读取方法参数,c#,.net,C#,.net,我想记录方法的条目。在条目日志中,我将有方法接收的输入\参数。必须对数千种方法执行此操作 我考虑使用C#属性记录输入参数,因为它们在方法调用之前触发。(类似于MVC中的ActionFilters) 可以通过属性读取方法参数吗 属性不是“在方法调用之前激发”,调用用属性修饰的方法的代码可以(也可以不)根据属性的存在做一些事情 属性不知道应用它的成员,也不能以任何(直接)方式访问它 您正在寻找的概念称为面向方面编程(AOP)。这是一种允许您在应用程序代码中“编织”样板代码块的技术。日志记录就是一个很

我想记录方法的条目。在条目日志中,我将有方法接收的输入\参数。必须对数千种方法执行此操作

我考虑使用C#属性记录输入参数,因为它们在方法调用之前触发。(类似于MVC中的ActionFilters)

可以通过属性读取方法参数吗

  • 属性不是“在方法调用之前激发”,调用用属性修饰的方法的代码可以(也可以不)根据属性的存在做一些事情

  • 属性不知道应用它的成员,也不能以任何(直接)方式访问它


  • 您正在寻找的概念称为面向方面编程(AOP)。这是一种允许您在应用程序代码中“编织”样板代码块的技术。日志记录就是一个很好的例子。您可以在每次方法调用之前和之后手动执行日志记录(一方面在大型项目中不可行,另一方面容易出错)
    或者您可以使用AOP框架,该框架允许您在一个地方定义这些横切函数,并以声明方式将其应用于应用程序代码。有几种方法可以实现这一点;一种是在构建应用程序逻辑之后创建IL,从而在编译时集成方面。一个众所周知的例子是。还有一个免费的版本,这是一个好的开始
    顺便说一句:PostSharp严重依赖于属性,所以你的思路是正确的

    另一个选项是在运行时集成方面(关键字是拦截)。大多数国际奥委会框架都提供了这一点。这种方法易于使用,但也有一些缺点(运行时性能较差,只能拦截虚拟方法)。

    这在常规C#/.NET中不受支持;有像post sharp这样的第三方工具可以实现这类功能,但是:这是在C#之外的步骤。是的,实际上,根据您的体系结构,有一些方法可以实现这一点。这是一个MVC4项目还是你想自己设计这样的系统?根据你的回答,我可以告诉你细节。