1

В моем приложении ASP.Net MVC у меня есть слой модели, который использует локализованные аннотации проверки для бизнес-объектов.Свойство 'ErrorMessageResourceType' не указано. на XmlSerialise

код выглядит следующим образом:

[XmlRoot("Item")] 
public class ItemBo : BusinessObjectBase 
{ 
    [Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(StringResource))] 
    [HelpPrompt("ItemNumber")] 
    public long ItemNumber { get; set; } 

Это хорошо работает.

Когда я хочу сериализация объекта к XML я получаю ошибку:

«свойство„ErrorMessageResourceType“указано не был найден» (хотя он теряется под другими ошибками, это InnerException Я пытаюсь работать на.

Таким образом, проблемой является использованием DataAnnotations атрибутов. соответствующие файлы ресурсов находятся в другой сборке и помечены как «общественность» и, как я сказал, что все работает хорошо, пока я не дойду до сериализации.

I имеют ссылки на соответствующий класс DataAnnotations и т. д. в моих тестах nunit и tar получить класс.

Кстати, HelpPrompt - это еще одна аннотация, определенная мной в другом месте и не вызывающая проблемы.

Кроме того, если я изменяю атрибут Required в стандартном формате следующим образом, сериализация работает нормально.

 [Required(ErrorMessage="Error")] 

Может кто мне помочь?

ответ

1

Ага, ответ был легче, чем я ожидал. Короче говоря, общедоступное статическое свойство RequiredField не было в сборке StringResource.

Проблема была обнаружена ошибка. Когда serialising объекта я должен был поймать исключение на попытку создать экземпляр serialiser

serial = new XmlSerializer(doc.GetType()); 

, а затем работать мой путь dfown через иерархию InnerExceptions проанализировать InvalidOperationException, что в результате и получить сообщение точной ошибки, который сказал мне, что было не так:

The resource type 'StringResource' does not have a publicly visible static property named 'RequiredField'.

хорошо работает в настоящее время