public static void ReadValueFromFile(string field, PropertyInfo exampleClassField, ExampleClass record) { if (exampleClassField.PropertyType.Name == typeof(string).Name) { record.GetType().InvokeMember(exampleClassField.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, record, new object[] { field }); } else if (exampleClassField.PropertyType.Name == typeof(double).Name) { record.GetType().InvokeMember(exampleClassField.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, record, new object[] { double.Parse(field) }); } else if (exampleClassField.PropertyType.Name == typeof(MyOtherClass).Name) { var other = new MyOtherClass(); // TO DO: Parse field to set properties in MyOtherClas record.GetType().InvokeMember(exampleClassField.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, record, new object[] { other }); } }