はじめに
こんにちは、東京アプリケーションシステム 第二ソリューション部のK.T.です。
今回は「文字列からプロパティの値を取得する」ということで、文字列からプロパティの値を取得する方法について簡単に説明していきたいと思います。
環境
.NET Framework 4.8
処理フロー
- 型情報を取得します。
- 指定されたプロパティ名からPropertyInfoを取得します。
- PropertyInfoから自身のインスタンスを使用して、値を取得します。
※サンプルでは、指定されたプロパティ名が見つからない場合は、nullを返すようにしています。
実装
Productクラスから文字列で、プロパティの値を取得するサンプルになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class Product { public int Id { get; } public string Name { get; } public Product(int id, string name) { Id = id; Name = name; } public object GetValue(string propertyName) { return GetType().GetProperty(propertyName)?.GetValue(this); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
internal class Program { static void Main(string[] args) { var apple = new Product(1, "リンゴ"); var id = apple.GetValue("Id"); var name = apple.GetValue("Name"); Console.WriteLine($"id is {id}, name is {name}"); Console.ReadKey(); } } |
実行すると下記の結果が得られます。
1 |
id is 1, name is リンゴ |
まとめ
今回は、「文字列からプロパティの値を取得する」についてでした。
使用した、PropertyInfoが存在するSystem.Reflectionには、メタデータから情報を取得する機能が他にもありますので、興味のある方は、System.Reflectionの機能を学習してみてはいかがでしょうか。