传递未知类作​​为参数(C#)

时间:2012-07-27 08:19:07

标签: c# list generics delegates unity3d

我已经编写了一个类来检测我的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引擎中,因此无法使用C#的最新功能,但我确信这一定是可行的。

我希望上面这个类中的'ButtonFunction'能够在不具体的情况下携带任何类。

有可能吗?

干杯,

下进行。

1 个答案:

答案 0 :(得分:0)

不确定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); };