以下是代码:
using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
namespace TestAttributes
{
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class TestAttribute : Attribute { }
public class TestClassMetadata
{
[Test]
public object Poperty { get; set; }
}
[MetadataType(typeof(TestClassMetadata))]
public partial class TestClass
{
public string Poperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
TestClass test = new TestClass();
TestAttribute attr = test.GetType().GetProperty("Poperty").GetCustomAttribute<TestAttribute>();
}
}
}
我的attr值中有空引用。但是,如果我通过TestClass定义直接分配属性TestAttribute,一切都会起作用。
如何获取元数据分配的自定义属性?
答案 0 :(得分:0)
我认为您需要澄清您的目标是什么,因为TestClass
“Poperty”没有TestAttribute
因此您将无法找到它。它在TestClassMetadata
“Poperty”上,但这样做很好。
TestClassMetadata test = new TestClassMetadata();
TestAttribute attr = test.GetType().GetProperty("Poperty").GetCustomAttribute<TestAttribute>();