I have to create a validation system(I don't want to use Data Annotation or any other system) for my C# application using .Net Compact Framework, where I have an object which contains many other objects.Many of the properties are dependent on each other means they have some sort of dependencies.I can write a simple validator class which goes through all the properties and checks them one by one with lots of if and else but I want to design something dynamic e.g. I should be able to specify list of dependencies on a property and specify a method which should be invoked during validation.I mean some design guidelines would be appreciated ?Example ( just for demo purpose ):    public enum Category        {            Toyota,            Mercedes,            Tata,            Maruti        }        class MyBigClass        {            public Category Category { get; set; }            public double LowerPrice { get; set; }            public double UpperPrice { get; set; }            public SomeOtherObject OtherObject { get; set; }public List<string> Validate()        {            List<string> listErrors = new List<string>();            ParameterInfo pInfo = null;            switch (Category)            {                case Category.Toyota:                    pInfo = ParameterStorage.GetParameterInfo(PTYPE.Category_Toyota);                    break;                case Category.Mercedes:                    pInfo = ParameterStorage.GetParameterInfo(PTYPE.Category_Mercedes);                    break;                case Category.Tata:                    pInfo = ParameterStorage.GetParameterInfo(PTYPE.Category_Tata);                    break;                case Category.Maruti:                    pInfo = ParameterStorage.GetParameterInfo(PTYPE.Category_Maruti);                    break;                default:                    break;            }            if (LowerPrice < pInfo.Min || LowerPrice >= pInfo.Max)            {                listErrors.Add(LowerPrice);            }            if (UpperPrice > pInfo.Max || UpperPrice <= pInfo.Min)            {                listErrors.Add(UpperPrice);            }            return listErrors;        }        }         public enum PTYPE            {                RATING,                Category_Tata,                Category_Toyota,                Category_Mercedes,                Category_Maruti            }            public class ParameterInfo            {                public PTYPE Type { get; set; }                public int Min { get; set; }                public int Max { get; set; }                public int Default { get; set; }            }       public class ParameterStorage        {            private static Dictionary<PTYPE, ParameterInfo> _storage = new Dictionary<PTYPE, ParameterInfo>();            static ParameterStorage()            {                _storage.Add(PTYPE.Category_Maruti, new ParameterInfo { Type = PTYPE.Category_Maruti, Min = 50000, Max = 200000 });                _storage.Add(PTYPE.Category_Mercedes, new ParameterInfo { Type = PTYPE.Category_Mercedes, Min = 50000, Max = 800000 });                _storage.Add(PTYPE.Category_Toyota, new ParameterInfo { Type = PTYPE.Category_Toyota, Min = 50000, Max = 700000 });                _storage.Add(PTYPE.Category_Tata, new ParameterInfo { Type = PTYPE.Category_Tata, Min = 50000, Max = 500000 });            }            public static ParameterInfo GetParameterInfo(PTYPE type)            {                ParameterInfo pInfo = null;                _storage.TryGetValue(type, out pInfo);                return pInfo;            }        }In the above example I have a MyBigObject which contains some properties and some other objects and I have a storage class which keeps all the limits of properties which will be required to validate a property.As described in the above example I have to get ParameterInfo for each property and then compare, I am looking for some kind of automatic way/dynamic way of doing the same.  
Design guidelines for this scenario in C#?
design;object oriented design