asp.Netカスタムプロパティ
8135 ワード
今日张子阳の.netでの反射(反射特性)文を见て、反射はカスタマイズの特性に合わせて确かにまだ役に立つと思って、前に本を読んで、ブログを见てから多くの心血が沸いているコードを机の上に置いて、时間が长くて、自分でもそれらが何をしているのか分からないで、それから削除して、たくさん书いたことがありますが、见たのも十分ですが、何も残っていません.そこで、ここに練習コードを記録することにしました.
定義されたプロパティクラスのコードを貼り付けます.
次に、このプロパティを使用する方法を示します.
新しいコンソールプログラムを作成し、プログラムでAttributeTestを参照し、mainでコードをコピーすれば直接実行できます.
クラスやメソッドの特性を反射で取得する方法では,コードの変更履歴をより容易に取得することができ,注釈を用いる方法よりも確かにずっとよい.
定義されたプロパティクラスのコードを貼り付けます.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace AttributeTest
{
[Serializable]
[ComVisible(true)]
/*AttributeUsage : , , , ?
* (AttributeTargets) ( ?)。
* ArributeTargets , , RecordAttributes ( Attribute), Class Method 。
* AllowMultiple ? , ? :
[Record(" ", " XXX", "2013-7-18 14:24:32")]
[Record(" ", " XXX", "2013-8-18 18:24:32")]
, AllowMultiple=true, ( ) 。
*/
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
// Attribute ( ?),.net Attribute
public class RecordAttribute : Attribute
{
//
public string Name { get; set; }
//
public string Memo { get; set; }
//
public DateTime Date { get; set; }
// ,RecordAttribute , Attribute, , 。
public RecordAttribute(string name, string memo, string date)
{
this.Name = name;
this.Memo = memo;
this.Date =Convert.ToDateTime(date);
}
}
}
次に、このプロパティを使用する方法を示します.
#region
// (Attribute)
AttributeTest att = new AttributeTest();
//type
Type t = att.GetType();
// AttributeTest ,
object[] os = t.GetCustomAttributes(typeof(RecordAttribute), false);
Console.WriteLine("AttributeTest :");
foreach (RecordAttribute item in os)
{
Console.WriteLine(" :" + item.Name + "," + " :" + item.Memo + "," + " :" + item.Date);
}
Console.WriteLine("AttributeTest ");
Console.WriteLine("AttributeTest aa :");
MethodInfo method = t.GetMethod("aa");
object[] mAtt = method.GetCustomAttributes(typeof(RecordAttribute), false);
foreach (RecordAttribute item in mAtt)
{
Console.WriteLine(" :" + item.Name + "," + " :" + item.Memo + "," + " :" + item.Date);
}
Console.WriteLine("AttributeTest aa ");
#endregion
新しいコンソールプログラムを作成し、プログラムでAttributeTestを参照し、mainでコードをコピーすれば直接実行できます.
クラスやメソッドの特性を反射で取得する方法では,コードの変更履歴をより容易に取得することができ,注釈を用いる方法よりも確かにずっとよい.