C((xi)属性名文字列で取得し、対象属性値を設定する動作例


本論文の実例は、C铉が属性の名前の文字列を通して取得し、対象の属性値を設定する操作を述べています。
ハ反射により対象属性値を取得し、属性値を設定します。
0、クラスを定義する

 public class User
 { 
  public int Id { get; set; }
  public string Name { get; set; }
  public string Age { get; set; }
 }

1、属性名(文字列)からオブジェクト属性値を取得する

 User u = new User();
 u.Name = "lily";
 var propName = "Name";
 var propNameVal = u.GetType().GetProperty(propName).GetValue(u, null);
 
 Console.WriteLine(propNameVal);// "lily"

2、属性名(文字列)によるオブジェクト属性値の設定

 User u = new User();
 u.Name = "lily";
 var propName = "Name";
 var newVal = "MeiMei";
 u.GetType().GetProperty(propName).SetValue(u, newVal);
 
 Console.WriteLine(propNameVal);// "MeiMei"

xi取得対象の属性名およびタイプはすべて
クラスのオブジェクトで実現

 User u = new User();

 foreach (var item in u.GetType().GetProperties())
 {
  Console.WriteLine($"propName:{item.Name},propType:{item.PropertyType.Name}");
 }
 // propName: Id,propType: Int32
 // propName:Name,propType: String
 // propName:Age,propType: String

クラスで実現

 foreach (var item in typeof(User).GetProperties())
 {
  Console.WriteLine($"propName:{item.Name},propType:{item.PropertyType.Name}");
 }
 // propName: Id,propType: Int32
 // propName:Name,propType: String
 // propName:Age,propType: String

↉判断対象に属性が含まれているかどうか

 static void Main(string[] args)
 {
  User u = new User();
  bool isContain= ContainProperty(u,"Name");// true
 }


 public static bool ContainProperty( object instance, string propertyName)
 {
  if (instance != null && !string.IsNullOrEmpty(propertyName))
  {
   PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
   return (_findedPropertyInfo != null);
  }
  return false;
 }

それを拡張方法としてカプセル化する

 public static class ExtendLibrary
 {
  /// <summary>
  ///                  
  /// </summary>
  /// <param name="instance">object</param>
  /// <param name="propertyName">       </param>
  /// <returns>    </returns>
  public static bool ContainProperty(this object instance, string propertyName)
  {
   if (instance != null && !string.IsNullOrEmpty(propertyName))
   {
    PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
    return (_findedPropertyInfo != null);
   }
   return false;
  }
 }
 static void Main(string[] args)
 {
  User u = new User();
  bool isContain= u.ContainProperty("Name");// true
 }

C˜関連の内容についてもっと興味がある読者は、当駅のテーマを見ることができます。「C〓〓〓データ構造とアルゴリズム教程」、「C〓〓は計算方法と技巧を遍歴して総括します。」、「Cハハハハ配列操作技術のまとめ」、「C铅対象プログラム設計入門教程
ここで述べたように、皆さんのC〓プログラムの設計に役に立ちます。