2013-12-17 4 views
1

У меня есть метод, который принимает параметр ApiController типа, как, например:создания и передачи типа параметров в C#

private List<MethodInfo> GetMethods<T>() 
{ 
    ... 
} 

Я пытаюсь создать тип, чтобы перейти к этому методу, используя следующие:

Type controller = Assembly.GetCallingAssembly().GetTypes().Where(
     type => type.Name.Contains(schema) && type.IsSubclassOf(typeof(ApiController))).First(); 

    var collection = GetMethods<controller>(); 

Ну, «контроллер типа или контроллера пространства имен не найден ...» Вождение меня!

Я уверен, что есть что-то простое, что я не вижу здесь, но я не могу понять это.

+0

Я думаю, это то, что вы ищете: http://msdn.microsoft.com/en-us/library/system.object.gettype.aspx, но этот подход кажется мне немного запутанным. –

ответ

1

Параметры типового типа должны быть признаны компилятором, а не созданы во время выполнения. controller - это имя переменной, а не тип, который компилятор может распознать во время компиляции, следовательно, ошибка. http://msdn.microsoft.com/en-us/library/0zk36dx2.aspx

+0

Итак, как мне создать экземпляр типа ApiContoller из типичного типа типа? – iGanja

+0

Вот как получить конструктор для типа: http: //msdn.microsoft.com/en-us/library/h93ya84h (v = vs.110) .aspx Оттуда вы вызываете 'Invoke' на него: http : //msdn.microsoft.com/en-us/library/6ycw1y17 (v = vs.110) .aspx – edtheprogrammerguy

+0

Вы также можете использовать отражение для вызова методов для типа. Вот обзор (может быть время от времени): http://msdn.microsoft.com/en-us/library/k3a58006.aspx – edtheprogrammerguy

Смежные вопросы