我正在编写游戏。每个级别都有一个类(level1,level2等),它告诉游戏要设置哪些对象以及其他内容。每个级别共享一个接口iLevel。
场景中的所有对象都可以访问iLevel中的任何内容,但有时我想调用仅存在于特定级别类中的方法。
例如:
public class Level1, iLevel {
public int GetANumber() {
return 5;
}
}
调用类需要这样做:
public class SomeObject {
iLevel myLevel = new iLevel();
int x = ... // now I need to call GetANumber() without knowing that object is Level1, Level2, etc.
}
我相信我需要以某种方式使用invoke,但我无法让它工作。我阅读了msdn上的文档,但我仍然无法让它工作。
非常感谢您的帮助!
答案 0 :(得分:1)
这里你可以使用if 是和作为运算符的条件,或者使iLevel成为一个抽象类,默认情况下GetNumber返回负值。
public class SomeObject {
iLevel myLevel = new iLevel();
int x = -1;
if(myLevel is Level1) {
x = (myLevel is Level1).GetANumber();
}
}
或者
public abstract class iLevel {
public virtual int GetANumber() {
return -1;
}
}
public class Level1 : iLevel {
public override int GetANumber() {
return 5;
}
}