Класс метаданных для сущности каркаса POCO - PullRequest
1 голос
/ 13 марта 2012

Я создаю класс метаданных для объекта POCO. Я добавляю атрибут «CSVColumn» (из LINQToCSV) в класс метаданных. Но когда я запускаю программу, она не может найти ее атрибуты.

Итак, я проверил это с помощью отражения,

Type t = typeof(Case);
PropertyInfo pi = t.GetProperty("ProviderId");  
//bool isReadOnly =  ReadOnlyAttribute.IsDefined(pi,typeof( ReadOnlyAttribute);
var attributes = pi.GetCustomAttributes(typeof(Case),true);

Он ничего не возвращает, вызывая «GetCustomAttributes».

Что я сделал не так ??

Ниже описан способ создания класса метаданных.

Одна вещь, которую я не понимаю, это то, что она отлично работает с валидациями MVC. Хотите знать, как это получить пользовательские атрибуты ???

Это объект POCO объекта структуры

public partial class Case
{
public string ProviderName { get; set; }        
public string ProviderId { get; set; }
}

Здесь я создаю частичный класс Case и классы метаданных,

[MetadataType(typeof(CaseMetaData))]
public partial class Case
{
    public class CaseMetaData
    {

        [CsvColumn(Name = "ProviderName", FieldIndex = 1)]
        public string ProviderName { get; set; }

        [CsvColumn(Name = "ProviderID", FieldIndex = 2)]
        public string ProviderId { get; set; }

    }

}

Пожалуйста, кто-нибудь может мне помочь, высоко ценится.

Приветствия

1 Ответ

2 голосов
/ 13 марта 2012

typeof(Case) не является типом атрибута.
Вы имеете в виду typeof(CsvColumnAttribute).

Кроме того, стандартное отражение не знает классов метаданных.
Вам нужно использовать AssociatedMetadataTypeTypeDescriptionProvider.

Хороший пример можно найти здесь

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