My favorites | Sign in
Logo
                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using uNhAddIns.Adapters;

namespace uNhAddIns.VAB
{
public class EntityValidator : IEntityValidator
{
#region IEntityValidator Members

///<summary>
/// Returns true if the entity is valid.
///</summary>
///<param name="entityInstance"></param>
///<returns></returns>
public bool IsValid(object entityInstance)
{
var results = DoValidation(entityInstance);
return results.IsValid;
}

///<summary>
/// Validates an entity and returns the information about invalid values.
/// </summary>
///<param name="entityInstance"></param>
///<returns></returns>
public IList<IInvalidValueInfo> Validate(object entityInstance)
{
ValidationResults vapResults = DoValidation(entityInstance);
var result = ConvertErrors(vapResults);
return result;
}

///<summary>
/// Validates a property of the entity and returns the information about invalid values.
///</summary>
///<param name="entityInstance"></param>
///<param name="property"></param>
///<typeparam name="T"></typeparam>
///<typeparam name="TP"></typeparam>
///<returns></returns>
public IList<IInvalidValueInfo> Validate<T, TP>(T entityInstance, Expression<Func<T, TP>> property) where T : class
{
string propertyName = GetMemberInfo(property).Name;
return Validate(entityInstance, propertyName);
}

///<summary>
/// Validates a property of the entity and returns the information about invalid values.
///</summary>
///<param name="entityInstance"></param>
///<param name="property"></param>
///<returns></returns>
public IList<IInvalidValueInfo> Validate(object entityInstance, string property)
{
ValidationResults vapResults = DoValidation(entityInstance);
var resultsForProperty = vapResults.Where(v => v.Key == property);
return ConvertErrors(resultsForProperty);
}

#endregion

protected virtual ValidationResults DoValidation(object value)
{
var factory = ValidationFactory.CreateValidator(value.GetType());
return factory.Validate(value);
}

protected virtual IList<IInvalidValueInfo> ConvertErrors(IEnumerable<ValidationResult> validationResults)
{
return validationResults.Select(e => new InvalidValueInfo(e))
.OfType<IInvalidValueInfo>()
.ToList();
}

private static MemberInfo GetMemberInfo(LambdaExpression lambda)
{
return ((MemberExpression) lambda.Body).Member;
}
}
}
Show details Hide details

Change log

r788 by jfromaniello on Oct 08, 2009   Diff
Added another validation framework named
Validation Application Block.
Go to: 
Sign in to write a code review

Older revisions

All revisions of this file

File info

Size: 2639 bytes, 85 lines
Hosted by Google Code