簡體   English   中英

將未知類作為參數傳遞(C#)

[英]Passing an unknown class as a parameter (C#)

我已經編寫了一個類來檢測UI上的按鈕按下情況,並且它什么也不做。 代碼運行時,我編寫的UI管理器類將查找按鈕並將它們存儲在列表中。

我的問題是我希望不同的按鈕具有不同的功能,但是所有按鈕都可以從同一UI管理器執行。 我有一個名為“按鈕信息”的第三類,我想保留對按鈕功能類的引用,但是我不知道該怎么做。

基本上,我希望按鈕類是這樣的:

using System.Collections;
using System.Collections.Generic;

public class ButtonInfo
{
    public int States;
    public int CurrentState;
    public int Animations;
    public void ButtonFunction<T>(); <--- This is the issue!
}

這是在Unity Engine中,因此不能使用C#的最新功能,但是我敢肯定這是可能的。

我希望上面的類中的“ ButtonFunction”能夠攜帶任何類而無需具體說明。

可能嗎?

干杯,

C。

不知道Unity3d是否支持此功能(目前無法測試),但是您嘗試過嗎?

public class ButtonInfo<T>
{
    public Action<T> ButtonFunction;
}

或者,如果不支持Action<T> ,請嘗試普通的委托:

public class ButtonInfo<T>
{
    public delegate void ButtonHandler(T param);
    public ButtonHandler ButtonFunction;
}

然后,您可以像這樣分配ButtonFunction(此處應支持Lambda表達式):

var x = new ButtonInfo<string>();
x.ButtonFunction += s => { Debug.Log(s); };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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