gpt4 book ai didi

C#:在其他方法中包装方法

转载 作者:太空狗 更新时间:2023-10-29 22:55:15 24 4
gpt4 key购买 nike

有没有办法在 C# 中透明地包装其他方法中的方法?我想实现 Moose 的周围功能所做的事情:http://search.cpan.org/perldoc?Moose::Manual::MethodModifiers

编辑:我所说的透明是指不修改原始方法。

最佳答案

我认为您正在寻找所谓的面向方面编程。有许多 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");
}
}

您可以通过将 Trace 属性放在它之前将其添加到方法“Foo”中:

[Trace]
public void Foo() { /* ... */ }

现在当 Foo 执行时,上面的 OnEntry 方法会在它之前运行,而 OnExit 会在它之后运行。

关于C#:在其他方法中包装方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com