У меня есть каталог, полный классов, и они в основном все выглядят следующим образом:Выполнить метод из динамически созданного экземпляра
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()
?
обычно все ваши классы наследуют от того же абстрактного класса с showSettings() определен метод, или все реализовать известный интерфейс с методом. Затем вы должны передать свой объект базовому классу или интерфейсу, а затем выполнить вызов. – dbugger
Итак, я сделал это, теперь я получаю сообщение об ошибке «ArgumentException: assemblyString не может иметь нулевую длину» Я не уверен, что разместить там для скрипта Unity3 ... –
Вы можете попробовать null вместо «", если это если эти классы находятся в исполняющей сборке. В противном случае требуется имя сборки. – dbugger