簡體   English   中英

在C#中將不同的對象分配給一個對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM