Вопрос:

Как получить пользовательский атрибут, назначенный метаданными?

c# attributes metadata

103 просмотра

1 ответ

13 Репутация автора

Вот код:

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. Но если я назначу атрибут TestAttribute по определению TestClass напрямую, все будет работать.

Как получить пользовательский атрибут, назначенный метаданными?

Автор: r00xus Источник Размещён: 02.01.2018 07:05

Ответы (1)


0 плюса

1933 Репутация автора

Я думаю, вам нужно уточнить, какова ваша цель, потому что у TestClass«Poperty» нет, TestAttributeтак что вы не сможете ее найти. Это на TestClassMetadata"Poperty", хотя, так что это работает просто отлично.

TestClassMetadata test = new TestClassMetadata();
TestAttribute attr = test.GetType().GetProperty("Poperty").GetCustomAttribute<TestAttribute>();
Автор: pmcilreavy Размещён: 02.01.2018 09:36
Вопросы из категории :
32x32