2011-10-20 9 views
1

文字列変数を使用して、指定されたクラスに関連付けられたプロパティを取得するにはどうすればよいですか?私は、次のようにクラス名を使用する場合: - Trebletはクラス名である文字列名を使用してクラスプロパティにアクセスする

PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();  

その後、私はクラスのプロパティの数を取得することができます。しかし、クラスの名前を文字列変数に置き換えるにはどうすればよいですか?すべてのご協力ありがとうございます。

答えて

1
string typeToSearchFor = "Treblet"; 
PropertyInfo[] propertyInfo = 
    Assembly.GetExecutingAssembly().GetTypes().Where(
     t => t.Name == typeToSearchFor).FirstOrDefault().GetProperties(); 

これはトリックを行う必要があります。型が定義されているアセンブリを検索する必要があります。簡単にするために、実行中のアセンブリを検索しました。

メモNameは型の名前にすぎず、FullNameは完全に名前空間を使用した型の名前です。

+0

これはすばらしいコード行ですが、実際には自分自身を作成し​​ようとしていたコード行に過ぎませんでした。とても感謝しています。 – user995689

1

あなたは一歩元を取る必要があります。問題はプロパティを取得していないため、GetPropertiesを呼び出すTypeの値を取得しています。そのためには、Assembly.GetType(string)またはType.GetType(string)が必要です。どちらの場合でも、名前空間に修飾された名前が必要です。 GuidではなくSystem.Guidです。

あなたはだけ名前空間修飾名でType.GetType(string)を使用している場合は、それだけでmscorlibと呼び出し元のアセンブリにチェックします - あなたは別のアセンブリ内の種類を見つけるために、アセンブリ修飾名が必要になります。

関連する問題