Использование отражения для получения атрибутов свойств из класса метаданных - PullRequest
3 голосов
/ 12 октября 2011

У меня есть сгенерированный LINQ класс под названием Project.

Я хотел добавить некоторые атрибуты к сгенерированным свойствам, поэтому я определил частичный класс с атрибутом MetadataType.

[MetadataType(typeof(Project_HiddenProps))]
public partial class Project : IProject
{
    // There are also a few additional properties defined here.
}

public class Project_HiddenProps
{
    [HiddenColumn]
    public System.Guid Id { get; set; } 
    // Id is an auto-generated property that I've added a custom attribute to
}

Позже я использую отражение, чтобы попытаться получить атрибуты этого свойства.

var customAttributes = prop.GetCustomAttributes(false);

Я получаю только один атрибут типа System.Data.Linq.Mapping.ColumnAttribute. Мой атрибут HiddenColumn не входит в коллекцию. Мой вопрос заключается в том, как получить эти свойства метаданных с помощью отражения.

Любая помощь будет принята с благодарностью.

1 Ответ

6 голосов
/ 12 октября 2011

Вы можете отразить другой класс, используя условный подход:

var type = Type.GetType(entityType.FullName + "_HiddenProps," + entityType.AssemblyQualifiedName);
type.GetProperty("Id").GetCustomAttributes(false);

Класс друзей не может быть автоматически объединен с основным компонентом. Это используется только для метаданных внутренней структуры (предположим, что это MVC или, возможно, динамические данные?)

Как упоминалось в комментариях @CyanLite, вы можете использовать класс Meta из атрибута метаданных , описанного здесь (ссылка Cyan добавлена).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...