0

我正在用 C# for iOS 用 cocosharp 编写游戏。我想要一个对象来存储来自不同类的不同对象,并且通过这个对象我想从这个对象调用公共方法。问题是活动对象可以来自三个不同的类,它们具有同名的公共方法。我的愿景是这样的:

//object for store active object
General_class active_object = new General_class();

//my_game_object is active layer now
active_object = my_game_object;


// pop_in() is method that has same name in different classes
active_object.pop_in();

我的问题是这样的事情是否可能,General_class 类应该是什么。

谢谢

编辑

我忘了提到 my_game_object 继承自 cocossharp 库的 CCLayer 类。

编辑 2

这个线程解决了我的问题。

4

3 回答 3

4

很简单,让这三个类实现一个接口:

public interface ILayer
{
    void pop_in();
}

// one of your classes
public class SomeLayer : ILayer
{
    // ...
}

//object for store active layer
ILayer active_layer = new SomeLayer();

// rest of the code works

尽管我怀疑这可能意味着您对 C# 的基本知识有限。也许你应该拿一本书。

于 2015-09-18T13:03:27.613 回答
0

定义一个接口,并将其添加为三个类中的每一个的接口:

public interface ILayer
{
    void pop_in();
}

public GameLayer : ILayer
{
    public void pop_in()
    {
        // GameLayer-specific implementation
    }
}

然后你的代码变成:

//object for store active layer
ILayer active_layer = // Whatever your default active layer is

//my_game_layer is active layer now
active_layer = my_game_layer;

// pop_in() is method that has same name in different classes
active_layer.pop_in();
于 2015-09-18T13:07:57.743 回答
0

制作一个顶级接口,声明此处所有相关类共有的方法。然后通过实现接口创建您需要的所有类,并在每个具体类中使用与接口中相同的签名定义方法。并且不要担心在运行时调用正确的方法,多态会完美地完成它的工作。

于 2015-09-18T13:58:28.590 回答