C#:尝试在类中调用方法

时间:2016-02-08 05:09:08

标签: c# invoke

我正在编写游戏。每个级别都有一个类(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上的文档,但我仍然无法让它工作。

非常感谢您的帮助!

1 个答案:

答案 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;
    }
}