C#:尝试调用 class 中的方法

C#: Trying to invoke a method in a class

我正在编写游戏。每个级别都有一个 class(级别 1、级别 2 等),告诉游戏要设置哪些对象以及其他内容。每个级别共享一个接口 iLevel。

场景中的所有物体都可以访问iLevel中的任何东西,但有时我想调用一个只存在于特定关卡中的方法class。

例如:

public class Level1, iLevel {
    public int GetANumber() {
       return 5;
    }
}

调用class需要这样做:

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 上的文档,但仍然无法正常工作。

非常感谢您的帮助!

在这里,您可以使用带有 isas 运算符的 if 条件,或者使 iLevel 成为抽象 class 并返回 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;
    }
}