C((xi)属性名文字列で取得し、対象属性値を設定する動作例
3617 ワード
本論文の実例は、C铉が属性の名前の文字列を通して取得し、対象の属性値を設定する操作を述べています。
ハ反射により対象属性値を取得し、属性値を設定します。
0、クラスを定義する
クラスのオブジェクトで実現
ここで述べたように、皆さんの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〓プログラムの設計に役に立ちます。