如果我通過MetadataType attribute將屬性應用於部分類,則通過Attribute.IsDefined()找不到這些屬性。任何人都知道爲什麼,或者我做錯了什麼?屬性。IsDefined未看到應用於MetadataType類的屬性
下面是我爲此創建的一個測試項目,但我真的試圖將自定義屬性應用於LINQ to SQL實體類 - 如this answer in this question。
謝謝!
using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
namespace MetaDataTest
{
class Program
{
static void Main(string[] args)
{
PropertyInfo[] properties = typeof(MyTestClass).GetProperties();
foreach (PropertyInfo propertyInfo in properties)
{
Console.WriteLine(Attribute.IsDefined(propertyInfo, typeof(MyAttribute)));
Console.WriteLine(propertyInfo.IsDefined(typeof(MyAttribute), true));
Console.WriteLine(propertyInfo.GetCustomAttributes(true).Length);
// Displays:
// False
// False
// 0
}
Console.ReadLine();
}
}
[MetadataType(typeof(MyMeta))]
public partial class MyTestClass
{
public string MyField { get; set; }
}
public class MyMeta
{
[MyAttribute()]
public string MyField { get; set; }
}
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : System.Attribute
{
}
}
支票本了這一點,我已經回答了這裏 http://stackoverflow.com/a/24757520/3050647 – elia07 2014-07-15 11:58:28
檢查這個這個問題這一點,我已經在這裏回答了這個問題 http://stackoverflow.com/a/24757520/3050647 – elia07 2014-07-15 12:17:19