在执行被调用函数之前执行代码

我希望能够以某种方式标记一个函数(属性可能?),这样当从任何地方调用它时,其他一些代码会处理参数并返回一个值而不是被调用的函数,或者可以让函数正常执行。

我会用它来轻松缓存。

例如,如果我有一个名为Add10的函数,它将如下所示:

int Add10 (int n) { return n + 10; } 

如果使用相同的值重复调用函数(Add10(7)),它将始终给出相同的结果(17),因此每次重新计算都没有意义。 当然,我不会用这么简单的function来做,但我相信你能理解我的意思。

C#是否提供了我想要的任何方式? 我需要一种方法将函数标记为缓存,以便当有人执行Add10(16)某些代码首先运行以检查字典时,我们已经知道Add10值为16并返回它,如果我们这样做,计算,存储和如果我们不回来。

你想记住这个function。 这是一种方式:

http://blogs.msdn.com/b/wesdyer/archive/2007/01/26/function-memoization.aspx

而不是函数,然后我将公开一个Func<> 委托

 Func add10 = (n) => { // do some other work ... int result = Add10(n); // calling actual function // do some more perhaps even change result ... return result; }; 

然后:

 int res = add10(5); // invoking the delegate rather than calling function 

就像杰森提到的那样,你可能想要像函数记忆这样的东西。

这是另一个关于它的SO线程: 缓存/记忆function结果的责任是什么?

您还可以使用与面向方面编程相关的原则来实现此类function。

http://msdn.microsoft.com/en-us/magazine/gg490353.aspx

C#中面向方面编程

MbCache可能正是您正在寻找的。