将不同的对象分配给 C# 中的一个对象
Assign different object to a one object in C#
我正在为 iOS 在 C# 中使用 cocosharp 编写游戏。我想要一个对象来存储来自不同 classes 的不同对象,并且通过这个对象我想从这个对象调用 public 方法。问题是活动对象可以来自三个不同的 classes 和 public 同名的方法。我的愿景是这样的:
//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 class.
应该是什么?
谢谢
编辑
我忘了说 my_game_object 从 CCLayer class 继承自 cocossharp 库。
编辑 2
This 线程解决了我的问题。
简单,让这三个 类 实现一个接口:
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();
创建一个顶层接口,它声明了这里所讨论的所有类 通用的方法。然后通过实现接口来创建您需要的所有 类,并在每个具体 类 中使用与接口中相同的签名定义方法。不要担心在运行时调用正确的方法,多态性会完美地完成它的工作。
我正在为 iOS 在 C# 中使用 cocosharp 编写游戏。我想要一个对象来存储来自不同 classes 的不同对象,并且通过这个对象我想从这个对象调用 public 方法。问题是活动对象可以来自三个不同的 classes 和 public 同名的方法。我的愿景是这样的:
//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 class.
应该是什么?谢谢
编辑
我忘了说 my_game_object 从 CCLayer class 继承自 cocossharp 库。
编辑 2
This 线程解决了我的问题。
简单,让这三个 类 实现一个接口:
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();
创建一个顶层接口,它声明了这里所讨论的所有类 通用的方法。然后通过实现接口来创建您需要的所有 类,并在每个具体 类 中使用与接口中相同的签名定义方法。不要担心在运行时调用正确的方法,多态性会完美地完成它的工作。