/// <summary> /// 这个方法可以设置成虚方法。 /// </summary> /// <param name="package"></param> /// <returns></returns> public virtual string Save(TriagePackage package) { if (!VerifyBeforeSave(package)) { return("SaveTriageInfo1:验证失败"); } return("SaveTriageInfo1:使用第一个实现来保存分诊信息"); }
/// <summary> /// 这个方法会在调用拦截的方法之后执行。 /// </summary> /// <param name="__result">这个表示拦截的方法的实际的返回值,名字只能是这个</param> /// <param name="package">这里是原方法的参数</param> /// <returns></returns> //[HarmonyPostfix] public static bool Postfix(bool __result, TriagePackage package) { if (__result) { var stack = new StackTrace(); var frames = stack.GetFrames(); if (frames.ToList().Exists(f => f.GetMethod().Name == "ReRegisterbtn_Click")) { UIRepository.PrintStrategy.PrintTriage(package.PatientVisit.PVID.ToString()); } } return(__result); }
/// <summary> /// 这个方法会在调用拦截的方法之前执行,这个方法的返回值需要是void或者bool,如果返回了false,则表示不再执行原方法 /// </summary> /// <param name="package">这里是原方法的参数</param> /// <returns></returns> //[HarmonyPrefix] public static bool Prefix(TriagePackage package) { //如果拦截的是实例方法,而不是静态方法,则方法的参数可以增加 实例的类型 __instance这样的参数。这样就可以访问得到实例对象。 return(true); }
public string Save(TriagePackage package) { return("SaveTriageInfo2:使用第二个实现来保存分诊信息"); }
/// <summary> /// 默认实现内的方法,如果是可能被改变的,比如说这种在分诊前验证的。可以设置成虚方法。 /// 这样如果有后续扩展,可以直接继承SaveTriageInfo1这个类,然后仅仅继承这个方法,这样可以减少很多的工作量。 /// </summary> /// <param name="package"></param> /// <returns></returns> protected virtual bool VerifyBeforeSave(TriagePackage package) { return(true); }