【问题标题】:How to create a [Tag] with specific method call?如何创建具有特定方法调用的 [Tag]?
【发布时间】:2014-02-17 10:17:11
【问题描述】:

我想创建一个具有特定语义目的的新自定义“[Tag]”。

图像你有一个服务中的方法列表,你希望其中一些记录一些信息:实际上我正在做类似的事情

public void Method(parameters)
{
   LogMethodCall();

   //Method Body
}

其实我更喜欢创建类似的东西:

[LogEnabled]
public void Method(parameters)
{
   //Method Body
}

并且在某个地方存储了类似的东西:

if (Method is LogEnabled) LogMethodCall()

这可能吗? C#中存在这种可能性吗?怎么称呼?

【问题讨论】:

  • 从未测试过,但您可能想看看:postsharp.net
  • @Dennis 怎么是重复的?
  • @svick,答案引导用户利用 PostSharp。这正是他们所做的。
  • @MichaelPerrenoud 除了解决方案不完全相同。在可能的重复中,我没有看到与 Adassko 的答案中的代码类似的任何内容。即便如此,我认为不应该根据答案重复关闭问题。只有问题本身才重要。

标签: c# tags c#-5.0


【解决方案1】:

使用postsharp:

使用它,您可以创建称为aspect 的东西。你的看起来像:

public class LogEnabled : OnMethodBoundaryAspect
{
        public override void OnEntry(MethodExecutionArgs args)
        {
            Logger.LogMethodCall();
        }
}

免费,速成版将是您所需要的一切

这些被称为属性,而不是“标签”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多