public int Field1 { get; set; }
public string Field2 { get; set; } = string.Empty;
public bool IncludeInvoiceFee { get; set; }
class DerivedClass : BaseClass
public new int IncludeInvoiceFee { get; set; }
BaseClass baseInstance = new BaseClass()
DerivedClass derivedInstance = new DerivedClass();
CopyValues(baseInstance, derivedInstance);
foreach (var property in derivedInstance.GetType().GetProperties())
Console.WriteLine($"Derived instance property {property.Name} is: {property.GetValue(derivedInstance)}");
static void CopyValues(BaseClass source, DerivedClass destination)
Type sourceType = source.GetType();
FieldInfo[] fields = sourceType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
foreach (FieldInfo field in fields)
if (field.FieldType == typeof(bool))
Console.WriteLine("łonderful!");
object value = field.GetValue(source);
field.SetValue(destination, value);