从动态创建的实例执行方法

时间:2014-11-22 21:44:26

标签: c# unity3d

我有一个充满类的目录,它们基本上都是这样的:

class QEDestroy {

    void showSettings() {
        // Do Something Here
    }
}

然后我有一个类,它将根据用户选择的项实例化其中一个类:

public class QESettings {

    public void GetSettings() {
        if (QEActions.actionInt >= 0) {
            string action = QEActions.actions[QEActions.actionInt];
            // Generate the class based on the action.
            // Run showSettings() within the class.
        }
    }
}

我无法弄清楚如何实例化该类;例如QEDestroy。从我所读到的,这是如何创建类:

var myObj = Activator.CreateInstance("", "QE" + action);

如果是,我该如何运行方法showSettings()

1 个答案:

答案 0 :(得分:0)

最简单的解决方案通常是正确的解决方案。创建interface

public interface QE
{
    void showSettings();
}

然后有不同的"版本"在QE函数上执行不同任务的showSettings()

public class QE_Example
{
    public void override showSettings()
    {
        print("I am different.");
    }
}

然后当你在QESettings课程中实例化时,你会这样做:

public void GetSettings()
{
    if(QEActions.actionInt >= 0) 
    {
        ...
        QE q = new QE_Example();
        q.showSettings();
    }
}

这意味着您实际上偶然发现了一个名为Strategy Pattern的着名设计模式。

enter image description here