【问题标题】:How to execute a method everytime before/after executing some other method which has many overloads?如何在执行具有许多重载的其他方法之前/之后每次执行方法?
【发布时间】:2010-12-08 10:22:52
【问题描述】:

我有一个已经开发并正在使用的现有应用程序。

一个类的方法之一(称为 Read())有多个重载。现在我想在那个类中介绍我的方法,该方法应该在调用 Read() 方法的任何重载之前或之后执行。将在运行时根据用户输入决定调用 Read() 方法的哪个重载。

在这种情况下我需要做什么?在执行任何现有的 Read() 方法重载之前或之后如何执行我的方法?

【问题讨论】:

  • 你能修改那些Read方法的源代码吗?
  • 你能看到源代码吗?是否所有的重载都会最终调用一个 Read() 方法?
  • @Danny Chen:是的,我可以访问源代码,也可以更改 Read() 重载。但是,与其更改大约 10 种不同的 Read() 重载,我是否有一种机制可以在调用 Read() 的任何重载之前或之后执行我的方法?
  • @w69rdy:不,所有重载都不会级联到最终调用一个 Read()

标签: c# .net-2.0


【解决方案1】:

您需要使用拦截器/AoP。首先想到的选项是 PostSharp 和 Microsoft Unity。

本月 MSDN 杂志上有一篇关于这类事情的非常好的文章: http://msdn.microsoft.com/en-us/magazine/gg490353.aspx

【讨论】:

    【解决方案2】:

    有一个通用方法

    public void Read<T>(T t) where t:ISomeCommonInterface
    {
       Before();
       Read(t);
       After();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 2016-11-23
      • 2020-10-25
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多