C# строка в класс, из которого я могу вызывать функции
инициализировать класс строковой переменной в C#? Я уже узнал, как создать класс, используя строку
так что у меня уже есть:
Type type = Type.GetType("project.start");
var class = Activator.CreateInstance(type);
что я хочу сделать, это вызвать функцию в этом классе, например:
class.foo();
Это возможно? а если это как?
5 ответов
Type yourType = Type.GetType("project.start");
object yourObject = Activator.CreateInstance(yourType);
object result = yourType.GetMethod("foo")
.Invoke(yourObject, null);
Если вы можете предположить, что класс реализует интерфейс или базовый класс, который предоставляет метод Foo, то приведите класс соответствующим образом.
public interface IFoo
{
void Foo();
}
тогда в своем коде вызова вы можете сделать:
var yourType = Type.GetType("project.start");
var yourObject = (IFoo)Activator.CreateInstance(yourType);
yourType.Foo();
Это возможно, но вам придется использовать отражение или иметь class
быть приведенным как правильный тип во время выполнения..
Пример отражения:
type.GetMethod("foo").Invoke(class, null);
Activator.CreateInstance
возвращает тип object
, Если вы знаете тип во время компиляции, вы можете использовать универсальный CreateInstance.
Type type = Type.GetType("project.start");
var class = Activator.CreateInstance<project.start>(type);
var methodInfo = type.GetMethod("foo");
object result = methodInfo.Invoke(class,null);
Второй аргумент метода Invoke - это параметры метода.