カスタム属性を作成し、Core.dll に配置しました。
public class DBColumnReference : Attribute
{
string m_column;
public string ColumnName {
get { return m_column; }
}
public DBColumnReference(string column)
{
m_column = column;
}
}
次に、Core.dll を参照するアプリを作成しました。
アプリで独自のオブジェクトを作成し、一部のプロパティで Core.dll のカスタム属性を使用します。
public class TestingObject4
{
string m_table = "TESTING_CORE_OBJECT4";
public string Table
{
get { return m_table; }
}
private int m_id = 0;
[DBColumnReference("ID")]
public int Id
{
get { return m_id; }
set { m_id = value; }
}
属性でプロパティをフィルタリングする Core メソッド "FilterProperties(typeof(TestingObject4))" を呼び出します。
private static Dictionary<string, PropertyInfo> FilterProperties(Type type)
{
Dictionary<string, PropertyInfo> result = new Dictionary<string, PropertyInfo>();
if(type == null)
return result;
PropertyInfo[] properties = type.GetProperties();
foreach(PropertyInfo prop in properties)
{
// Attribute[] atributes = Attribute.GetCustomAttributes(prop, true);
object[] atributes = prop.GetCustomAttributes(typeof(DBColumnReference), true);
if(atributes != null && atributes.Length != 0)
{
DBColumnReference reference = atributes[0] as DBColumnReference;
result.Add(reference.ColumnName, prop);
}
}
return result;
}
属性Attributes[]
は常に空です。どのように正しく属性を取得しますか?