调用函数#1时自动调用函数#2

时间:2009-03-09 13:05:02

标签: c# attributes function-calls

这应该是一个快速的。有可能做这样的事情:

[Callback(funtionY)]
void functionX()
{
}

void functionY()
{
}

这样当调用functionX时,也会自动调用functionY?我问的原因是因为我要为基于XNA的小型游戏引擎实现网络功能,并且我想将函数标记为Synched,以标记当函数被调用时应该在所有客户端调用它。

感谢。

5 个答案:

答案 0 :(得分:8)

听起来像你想要Aspect-Oriented Programming

我之前已经使用过PostSharp了,而且效果非常好。

答案 1 :(得分:5)

你可以用PostSharp轻松地做到这一点,但总的来说:不;你必须明确地称之为。

答案 2 :(得分:4)

是的,你可以,只需将它们作为代表创建。

Action foo = functionX;
foo += functionY;

foo(); // both called

更新:Jon(谢谢)指出调用顺序实际上是确定的。但我永远不会依赖这个。见评论。

答案 3 :(得分:2)

有什么理由你不能这样做:

void functionX()
{
    functionY();
    // ... etc
}

根据问题中的描述,这是一个有效的答案。我猜你已经考虑过了。

另一种可能性是使用事件系统,例如(未编译):

event Action FunctionXCalled;

// somewhere in initialization...
MyCtor()
{
    FunctionXCalled += functionY;
}

void functionY() { }

void functionX()
{
    if(FunctionXCalled != null) FunctionXCalled();
    // ... etc
}

答案 4 :(得分:0)

怎么样:

void functionX() {
   functionY();
   // Other implementation stuff
}

void functionY() {

}