public static void Refresh(this SimpleAvatarPedestal pedestal, ApiAvatar avatar) { if (ourPedestalRefreshDelegate == null) { var target = typeof(SimpleAvatarPedestal) .GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).Single( it => { if (it.ReturnType != typeof(void)) { return(false); } var parameters = it.GetParameters(); if (parameters.Length != 1 || parameters[0].ParameterType != typeof(ApiAvatar)) { return(false); } return(XrefScanner.XrefScan(it).Any(jt => jt.Type == XrefType.Global && jt.ReadAsObject()?.ToString() == "local")); }); ourPedestalRefreshDelegate = (PedestalRefreshDelegate)Delegate.CreateDelegate(typeof(PedestalRefreshDelegate), target); } ourPedestalRefreshDelegate(pedestal, avatar); }
public static void DisplayErrorAvatar(this SimpleAvatarPedestal @this) { if (ourDisplayErrorAvatarDelegate == null) { var target = typeof(SimpleAvatarPedestal) .GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).Single( it => { if (it.ReturnType != typeof(void) || it.Name.Contains("_PDM_")) { return(false); } var parameters = it.GetParameters(); if (parameters.Length != 0) { return(false); } return(XrefScanner.XrefScan(it).Any(jt => jt.Type == XrefType.Global && jt.ReadAsObject()?.ToString() == "local")); }); ourDisplayErrorAvatarDelegate = (DisplayErrorAvatarDelegate)Delegate.CreateDelegate(typeof(DisplayErrorAvatarDelegate), target); } ourDisplayErrorAvatarDelegate(@this); }