Как проверить аннотации данных с помощью класса MetaData - PullRequest
2 голосов
/ 22 января 2010

Я пытаюсь проверить класс, используя аннотации данных, но с классом метаданных.

[MetadataType(typeof(TestMetaData))]
public class Test
{
    public string Prop { get; set; }

    internal class TestMetaData
    {
        [Required]
        public string Prop { get; set; }
    }
}

[Test]
[ExpectedException(typeof(ValidationException))]
public void TestIt()
{
    var invalidObject = new Test();
    var context = new ValidationContext(invalidObject, null, null);
    context.MemberName = "Prop";
    Validator.ValidateProperty(invalidObject.Prop, context);
}

Тест не пройден. Если я отказываюсь от класса метаданных и просто украшаю свойство фактического класса, оно работает нормально. Что я делаю не так? Это ставит меня на грань безумия. Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 22 июня 2010

Ответ

Вот ссылка на пост, который помог мне решить эту проблему. По-видимому, вы должны сначала зарегистрировать класс метаданных.

0 голосов
/ 22 марта 2010

Класс метаданных должен быть общедоступным, чтобы внешняя проверка работала.

[MetadataType(typeof(TestMetaData))] 
public class Test 
{ 
    public string Prop { get; set; } 

    public class TestMetaData 
    { 
        [Required] 
        public string Prop { get; set; } 
    } 
}

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

...