有没有办法在C#中透明地包装其他方法中的方法?我希望实现Moose围绕功能所做的工作:http://search.cpan.org/perldoc?Moose :: Manual :: MenodModifiers
编辑:透明,我的意思是不修改原始方法.
我认为您正在寻找所谓的面向方面编程。有许多 C# 库可以帮助解决此问题。一种称为PostSharp(PostSharp 的免费版本支持此功能)。这是一个与驼鹿示例类似的示例。这将创建一个跟踪属性,您可以在其他方法上使用该属性来附加此额外功能:
[Serializable]
public class TraceAttribute : OnMethodBoundaryAspect
{
public override void OnEntry( MethodExecutionArgs args )
{
Trace.WriteLine("about to call method");
}
public override void OnExit(MethodExecutionArgs args)
{
Trace.WriteLine("just finished calling method");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过在方法“Foo”之前放置 Trace 属性来将其添加到方法“Foo”中:
[Trace]
public void Foo() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
现在,当 Foo 执行时,上面的 OnEntry 方法将在其之前运行,OnExit 将在其之后运行。
归档时间: |
|
查看次数: |
778 次 |
最近记录: |