这应该是一个快速的。有可能做这样的事情:
[Callback(funtionY)]
void functionX()
{
}
void functionY()
{
}
这样当调用functionX时,也会自动调用functionY?我问的原因是因为我要为基于XNA的小型游戏引擎实现网络功能,并且我想将函数标记为Synched,以标记当函数被调用时应该在所有客户端调用它。
感谢。
答案 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() {
}