这应该是一个快速的。是否有可能做这样的事情:
[Callback(funtionY)]
void functionX()
{
}
void functionY()
{
}
这样在调用 functionX 时,也会自动调用 functionY 吗?我问的原因是因为我要为基于 XNA 的小型游戏引擎实现网络功能,并且我想将函数标记为同步,以标记在调用函数时应该在所有客户端上调用它。
谢谢。
这应该是一个快速的。是否有可能做这样的事情:
[Callback(funtionY)]
void functionX()
{
}
void functionY()
{
}
这样在调用 functionX 时,也会自动调用 functionY 吗?我问的原因是因为我要为基于 XNA 的小型游戏引擎实现网络功能,并且我想将函数标记为同步,以标记在调用函数时应该在所有客户端上调用它。
谢谢。
听起来你想要Aspect-Oriented Programming。
我以前用过PostSharp,效果很好。
您可以使用PostSharp很容易地做到这一点,但总的来说:不;你必须明确地调用它。
是的,您可以,只需将它们创建为代表即可。
Action foo = functionX;
foo += functionY;
foo(); // both called
更新:乔恩(谢谢)指出调用顺序实际上是确定的。然而,我永远不会依赖这个。看评论。
有什么原因你不能这样做:
void functionX()
{
functionY();
// ... etc
}
根据问题中的描述,这是一个有效的答案。不过,我假设您已经考虑过了。
另一种可能性是使用事件系统对您有利,例如(未编译):
event Action FunctionXCalled;
// somewhere in initialization...
MyCtor()
{
FunctionXCalled += functionY;
}
void functionY() { }
void functionX()
{
if(FunctionXCalled != null) FunctionXCalled();
// ... etc
}
怎么样:
void functionX() {
functionY();
// Other implementation stuff
}
void functionY() {
}