2016-12-13 4 views
0

私はここにこだわっています。私の対ソリューションには10種類のプロジェクトがあります。 DALには、2つのEF 6.0オブジェクトがあり、EGとELと言ってください。 私はAPIプロジェクトを持っています。これには次のように私は機能を持って、私はEFクラスのプロパティを返すようにしようとしています:Type.getTypeでクラスの "Type"オブジェクトを作成する

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は」nullを返します。これはAssemblyInformationのためですか?もしそうなら、正しいコードは何でしょうか。私はAssemblyの完全修飾名を文字列に持っています。 Thanks-- Anirban

+0

それらをロードする必要があります。 – Yitzchak

+0

ここに誤植があります。ありがとう、私はそれを整理しました。しかし、まだ問題は残っています。 –

+0

私も入力ミスがありました。今すぐコメントを確認してください – Yitzchak

答えて

1

問題は、最後の行です。タイプType(変数thisType)の.GetType()を呼び出していますが、そのタイプはRuntimeTypeで、タイプは返しません。最後の行は

return thisType.GetProperties(); 

する必要がありますし、あなたの名前空間が正しいので、あなたがプロジェクトでこれらの名前空間(E.DAL.ELE.DAL.EG)を持っている場合は、それが動作します。

それは名前空間をチェックし、それらのタイプがあなたのコードと同じアセンブリ内にあることを確認していない場合は!それらが外部のものにある場合は、GetTypeメソッドのためにそれを指定する必要があります。これらは、アセンブリにSharedAssembly命名されていると仮定すると、

は、あなたは)私はリターンが戻りthisType.GetProperties(あるべきと信じてこのよう

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

ありがとう –

関連する問題