如何获取元数据分配的自定义属性?

时间:2018-01-02 07:05:59

标签: c# attributes metadata

以下是代码:

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,一切都会起作用。

如何获取元数据分配的自定义属性?

1 个答案:

答案 0 :(得分:0)

我认为您需要澄清您的目标是什么,因为TestClass“Poperty”没有TestAttribute因此您将无法找到它。它在TestClassMetadata“Poperty”上,但这样做很好。

TestClassMetadata test = new TestClassMetadata();
TestAttribute attr = test.GetType().GetProperty("Poperty").GetCustomAttribute<TestAttribute>();