2016-12-13 3 views
0

Я застрял здесь. В моем решении vs у нас есть 10 различных проектов. DAL содержит 2 объекта EF 6.0, скажем EG и EL. У меня есть проект API. В которой у меня есть функция следующим образом, я пытаюсь вернуть свойство класса EF:Создание объекта «Тип» класса по типу Type.getType

public IEnumerable<PropertyInfo> GetGetProperties(string className, string instanceType) 
    { 
     Type thisType; 

     if (instanceType.Contains("G")) 
     { 
      thisType = Type.GetType("E.DAL.EG." + className); 
     } 
     else 
     { 
      thisType = Type.GetType("E.DAL.EL." + className); 
     }    
     return thisType.GetType().GetProperties(); 
    } 

Но каждый раз, когда «thisType» возвращает нуль. Это из-за AssemblyInformation? если да, то какой будет правильный код. У меня есть полное имя Assembly в строке. Спасибо-- Anirban

+0

Я считаю, что возвращение должно быть возвращение в thisType.GetProperties(); – Yitzchak

+0

Это ошибка типографии здесь, спасибо, я исправил ее. Но проблема остается. –

+0

У меня тоже была опечатка, отметьте комментарий – Yitzchak

ответ

1

Проблема в последней строке. Вы звоните .GetType() по типу Type (переменная thisType), и это вернет RuntimeType, а не ваш тип. Последняя строка должна быть

return thisType.GetProperties(); 

и если ваши Пространства имен являются правильными, поэтому у вас есть эти пространства имен (E.DAL.EL и E.DAL.EG) в проекте, он будет работать.

Если он не проверяет пространства имен и проверяет, что эти типы находятся в той же сборке, что и ваш код! Если они находятся во внешнем, вам необходимо указать его для метода GetType.

Предполагая, что те находятся в сборке с именем SharedAssembly, то вам необходимо загрузить их таким образом

thisType = Type.GetType("E.DAL.EG." + className+ ", SharedAssembly"); 
+0

Спасибо. Позвольте мне проверить –

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