Получать одинокую группу методов класса с именем

у меня есть мой класс

class MyClass
{
  public string MyString{ get; set; }
}

и я имею метод по отношению к части, которая использует класс MyClass

myMethod<MyClass>();

я нуждаюсь в том, чтобы получить MyClass только размещая имя, чтобы быть использованным в методе

я использую

Type tipotabla = Type.GetType("MyProject.MyCLass");

но я получаю тип и не моги быть использованным в методе

myMethod это метод, который я знаю и могу призывать, что изменчивое, MyClass, из которых я имею несколько классов с различными именами, поэтому мне нужно, чтобы только с именем класса он смог получать группу методов, чтобы быть использованным

Я использую Dapper, чтобы получать информацию о базе данных и имя класса это имя таблицы и каждое из полей таблицы это поля класса и с dapper посылая класс, он создаст список этого типа с информацией и не динамической переменной.

форма, в которой я это делаю dinamicamente, - следующая

 public object SelectAll<T>()
    {
        ///Obtiene el select de la tabla con todos los campos del objeto
        try
        {
            string campos = string.Empty;
            foreach (var campo in typeof(T).GetProperties())
            {
                campos = campos + campo.Name + ", ";
            }
            campos = campos.Remove(campos.Length - 2);
            string consulta = string.Format("SELECT {0} FROM {1}", campos, typeof(T).Name);

            using (var connection = GetConnectionCr6())
            {
                var res = connection.Query<T>(consulta).ToList();
                return res;
            }
        }
        catch (Exception)
        {
            return null;
        }

    }

и я получаю такой info

(T)query = SelectAll<T>();
3
задан 20.03.2019, 17:35
1 ответ

Если я понял тебя добро, ты должен использовать Reflection, чтобы получать MethodInfo тебя mГ©todo genГ©rico. Позже, чтобы создавать инстанцию, ты должен использовать mГ©todo MethodInfo.MakeGenericMethod с типом, и из-за Гєltimo, призывать это. Так:

MethodInfo method = typeof(clase).GetMethod("myMethod");
Type tipo = Type.GetType("MyProject.MyCLass");
MethodInfo generico = method.MakeGenericMethod(tipo);
clase c = new clase();
generico.Invoke(c,null);
2
ответ дан 02.12.2019, 05:22
  • 1
    но для тебя класс, который был бы? имея в виду, что myMethod, знаю ли я это и это всегда будет тот же самый, переменную это MyProject. MyCLass – Carlos Mario 20.03.2019, 17:22
  • 2
    @CarlosMario clase - класс где está твой mé совсем myMethod. Esté ademá s deberí чтобы быть pú blico (если не, нужно делать modificació n в этот có я говорю) – Pikoh♦ 20.03.2019, 17:23
  • 3
    я получаю эту ошибку " Объект не совпадает с типом судьбы " – Carlos Mario 20.03.2019, 17:28
  • 4
    если он имеет parameros, но лишите себя их только из-за того, что делал доказательство, у него нет ограничения типа, но равного уже я введу код в компьютер – Carlos Mario 20.03.2019, 17:33
  • 5
    @CarlosMario myMethod está в классе, отличном от, откуда ты это выполняешь? – Pikoh♦ 20.03.2019, 17:36