@e1s

Как вызывать методы класса с параметрами из xml файла или массива?

Есть класс с методами которые могут принимать в качестве параметров строковые переменные, при этом методы разные как по количеству принимаемых параметров, так и по возвращаемому значению. Для примера

obj["param1"] = xmlobj.SelectSingleNode["param2", nsmg].Atribute["param3"].Value;
obj["param4"] = class_method("param5");

Есть xml файл который хранит эти параметры, для простоты возьмем массив

string[,] param_mas = 
{
{"param1", "param2", "param3"},
{....},
}

Как в этом массиве можно хранить/передавать параметр, который будет отвечать за то какой метод использовать для данного набора параметров?
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
artem_b89
@artem_b89
Сетевой бездельник
Организуйте в своём коде некоторую структуру/класс в которой будете хранить имя вызываемого метода и его параметры. Например
public class SampleContainer
    {
        public string MethodName { get; set; }
        public object[] Params { get; set; }
    }

В XML может выглядить приблизительно так:
<Method>
    <Name>Some_Method_Name</Name>
    <Params>
      <Param name = 'param1' value='value1'></Param>
      <Param name = 'param2' value='value2'></Param>
    </Params>
</Method>


Далее в коде парсите XML, сохраняете в свою структуру и вызываете нужный вам метод через Reflections, пример:
using System;
using System.Reflection;
namespace ConsoleApplication2
{
    public class Sample
    {
        public string SampleMethod(string param1, string param2)
        {
            return param1 + param2;
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Sample sample = new Sample();
            var method = typeof(Sample).GetMethod("SampleMethod");
            object[] param = new object[] {"Hello ","World!"};
            string result = method.Invoke(sample, param) as string;
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
{method = "method1", param1", "param2", "param3"}
Ну дальше call method by name, словарь из функторов или case. К чему душа лежит.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы