public static void CopyTo(this HarmonyMethod from, HarmonyMethod to) { if (to == null) { return; } var fromTrv = Traverse.Create(from); var toTrv = Traverse.Create(to); HarmonyMethod.HarmonyFields().ForEach(f => { var val = fromTrv.Field(f).GetValue(); if (val != null) { toTrv.Field(f).SetValue(val); } }); }
public static HarmonyMethod Merge(this HarmonyMethod master, HarmonyMethod detail) { if (detail == null) { return(master); } var result = new HarmonyMethod(); var resultTrv = Traverse.Create(result); var masterTrv = Traverse.Create(master); var detailTrv = Traverse.Create(detail); HarmonyMethod.HarmonyFields().ForEach(f => { var baseValue = masterTrv.Field(f).GetValue(); var detailValue = detailTrv.Field(f).GetValue(); resultTrv.Field(f).SetValue(detailValue ?? baseValue); }); return(result); }
public static HarmonyMethod Merge(this HarmonyMethod master, HarmonyMethod detail) { if (detail == null) { return(master); } var harmonyMethod = new HarmonyMethod(); var resultTrv = Traverse.Create(harmonyMethod); var masterTrv = Traverse.Create(master); var detailTrv = Traverse.Create(detail); HarmonyMethod.HarmonyFields().ForEach(delegate(string f) { var value = masterTrv.Field(f).GetValue(); var value2 = detailTrv.Field(f).GetValue(); resultTrv.Field(f).SetValue(value2 ?? value); }); return(harmonyMethod); }