HellFingers
@HellFingers

Ошибка при рефлексии кода?

Здравствуйте, имеется метод Main, который на вход получает список и строку, необходимо исходя из значения строки формировать имя метода и вызывать его, передовая этот список и строку. Решил для данной задачи воспользоваться рефлексией, но выдает ошибку в строке VariableNames = Finder.Invoke(this, new object[] { TextFromFile, FromLanguage });
Пишет что невозможно преобразовать тип object в ArrayList, не понимаю, где у меня ошибка. Заранее благодарен.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Reflection;
namespace VariableFinder
{
    public class Finder : MonoBehaviour
    {
        public ArrayList Main(ArrayList TextFromFile, string FromLanguage)
        {
            ArrayList VariableNames;
            string MethodName = "Finder" + FromLanguage.ToUpper();
            MethodInfo Finder = this.GetType().GetMethod(MethodName);
            VariableNames  = Finder.Invoke(this, new object[] { TextFromFile, FromLanguage });
            return VariableNames;
        }



        //Методы поиска имен переменных

        public ArrayList FinderPYTHON(ArrayList TextFromFile, string FromLanguage)
        {
            ArrayList VariableNames = new ArrayList();
            VariableNames.Add("one");
            return VariableNames;
        }
        
    }
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Результат вызова метода нужно привести к типу переменной VariableNames:
VariableNames = (ArrayList)Finder.Invoke(this, new object[] { TextFromFile, FromLanguage });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы