public static ClientQuenstionForm GetInputData(this ClientQuenstionForm form) { foreach (var property in form.GetType().GetProperties()) { var a = property.GetCustomAttributes(typeof(InputDataAttribute), true) .Cast <InputDataAttribute>().FirstOrDefault(); if (a == null) { continue; } Console.WriteLine(a.Question + ":"); var t = Console.ReadLine(); var r = Convert.ChangeType(t, property.PropertyType == typeof(Money) ? typeof(int) : property.PropertyType); if (property.PropertyType == typeof(Money)) { r = new Money((int)r); } property.SetValue(form, r, null); } return(form); }
static void Main(string[] args) { var form = new ClientQuenstionForm() { MonthlyIncome = 5000, MonthlyCarCosts = 500, MonthlyLivingCosts = 1500, PeopleSupported = 2 }; //form.GetInputData(); ICredibilityPolicy policy = GetSimplePolicy(); //ICredibilityPolicy policy = GetRulePolicy(); var money = policy.Calculate(form); Console.WriteLine("Your credibility is: " + money); }