public static bool GetMightyVoidMethod(this BaseMightyMember mightyMember, object target, string memberName, CallbackSignature callbackSignature, out MightyVoidMethod method) { if (string.IsNullOrWhiteSpace(memberName)) { method = null; return(false); } if (target is BaseWrapperAttribute wrapper && GetCallbackName(target, memberName, out var callbackName)) { return(mightyMember.GetMightyVoidMethod(mightyMember.GetWrapperTarget(wrapper), callbackName, callbackSignature, out method)); } if (InternalGetMightyVoidMethod(target, memberName, callbackSignature, out method)) { return(true); } if (!(mightyMember is MightySerializedField serializedField)) { return(false); } target = serializedField.Property.GetPropertyTargetReference(); return(target.GetType().GetCustomAttributes(typeof(SerializableAttribute), true).Length > 0 && InternalGetMightyVoidMethod(target, memberName, callbackSignature, out method)); }
private static bool InternalGetMightyVoidMethod(object target, string memberName, CallbackSignature callbackSignature, out MightyVoidMethod method) { var methodInfo = ReflectionUtilities.GetMethod(target.GetType(), memberName); if (callbackSignature.IsMethodValid(methodInfo)) { method = new MightyVoidMethod(target, methodInfo); return(true); } method = null; return(false); }