C#反射技術の簡単な操作(クラスのプロパティの読み取りと設定)
3992 ワード
public class A
{
public int Property1 { get; set; }
}
static void Main(){
A aa = new A();
Type type = aa.GetType();//
System.Reflection.PropertyInfo propertyInfo = type.GetProperty("Property1");
propertyInfo.SetValue(aa, 5, null);//
int value = (int)propertyInfo.GetValue(aa, null);
Console.WriteLine(value );
}
少量のプロパティの自動化操作を手動で何回か追加するのはもちろん問題ありませんが、プロパティの数が多い場合はこれらの煩雑なロックのコードを叩くと眠くなり、拡張性やメンテナンス性に多くの不便をもたらすため、反射を使用して実現する必要があります.
1つのタイプのインスタンスのプロパティまたはフィールドに動的に値を割り当てたり、値を取ったりするには、まずこのインスタンスまたはタイプのTypeを得る必要があります.マイクロソフトはすでに十分な方法を提供しています.
まずテストのクラスを作成します
{
public int two { set; get; }
public int three { set; get; }
}
次にクラスを反射するコードを記述します
Type t = typeof(MyClass);
{
i += 1;
//単独賦課
//循環取得
foreach (var item in t.GetProperties())
sb.Append(「タイプ:」+item.PropertyType.FullName+「属性名:」+item.Name+「値:」+item.GetValue(obj,null)+「
」);
//単独取値
sb.Append(「fiveの値を単独で取る:」+five);
Response.Write(result);
テスト結果:タイプ:System.Int 32属性名:one値:0タイプ:System.Int 32属性名:two値:1タイプ:System.Int 32属性名:five値:11111111型:System.Int 32属性名:three値:3タイプ:System.Int 32属性名:four値:4単独fiveの値:11111111
クラスのプロパティ反射の使用を理解すると、t.GetProperties()をt.GetMethods()に変更し、操作方法は同じです.
注意:上記のコードで直接使用できない場合はusing Systemを追加してください.Text;を行ないます.
おすすめ読書: