[英]Assign different object to a one object in C#
我正在用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
這個線程解決了我的問題。
簡單,使這三個類實現一個接口:
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();
創建一個頂層接口 ,該接口聲明此處所有相關類都通用的方法。 然后,通過實現接口來創建所需的所有類,並在每個具體類中的接口中定義與簽名相同的方法。 不必擔心在運行時會調用正確的方法,多態將完美地完成其工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.