samedi 24 septembre 2016

How to validate the properties of a class hierarchy with a list of property names

I have a class structure like the following

public Class A 
{
    public B;
    public C;
    public string strA;
}

public Class B 
{
    public D;
    public string strB;
}

public Class C 
{
    public string strC1;
    public string strC2;
}

public Class D 
{
    public string strD1;
    public string strD2;
}

For an object of class A,

A objA

I need to validate for example :

  • objA.B.strB
  • objA.B.D.strD2
  • objA.C.strC1

that they are nonempty strings. (Of course, it should be validated that the objects objA.B, objA.B.D and objA.C are not null)

I want to realize it with a method like

public bool ValidatePropertiesWithList(object obj, List<string> listOfFieldNamesToValidate, out string nameOfThePropertyThatViolatesTheValidation)

So I want to validate that the properties with the names in listOfFieldNamesToValidate are not empty, and return with an out parameter the name of the property (if any) that violates this.

Should I use Reflection to realize this validation or are Validation Attributes a better choice for me?

Using obj.GetType().GetProperties() seems to be a good place to start but I dont know how I can handle the hierarchical structure of the classes.

Is it possible to mark the properties of the classes with property attributes so that I can get rid of the listOfFieldNamesToValidate parameter in an elegant way?





Aucun commentaire:

Enregistrer un commentaire