在c#中为一个对象分配不同的对象

本文关键字:对象 分配 一个对象 | 更新日期: 2023-09-27 18:13:15

我正在用c#编写面向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

在c#中为一个对象分配不同的对象

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

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#的基础知识有限。也许你该拿本书来。

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

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();

创建一个顶层的接口,声明这里讨论的所有类都通用的方法。然后通过实现接口创建所需的所有类,并在每个具体类的接口中定义具有相同签名的方法。不要担心在运行时调用正确的方法,多态性会完美地完成它的工作。