From 5debef8fe65d7ea11940942698a532f6fca2974e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?johnche=28=E8=BD=A6=E9=9B=84=E7=94=9F=29?= Date: Tue, 20 Mar 2018 17:35:29 +0800 Subject: [PATCH] =?UTF-8?q?override=E4=B8=80=E4=B8=AA=E6=B3=9B=E5=9E=8B?= =?UTF-8?q?=E7=88=B6=E7=B1=BB=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/XLua/Src/Editor/Hotfix.cs | 20 +++++++++++++++++++- Tools/XLuaHotfixInject.exe | Bin 32768 -> 33280 bytes Tools/XLuaHotfixInject.pdb | Bin 56832 -> 56832 bytes 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Assets/XLua/Src/Editor/Hotfix.cs b/Assets/XLua/Src/Editor/Hotfix.cs index 446ca05de..14190cd7f 100644 --- a/Assets/XLua/Src/Editor/Hotfix.cs +++ b/Assets/XLua/Src/Editor/Hotfix.cs @@ -648,7 +648,25 @@ static MethodReference findBase(TypeDefinition type, MethodDefinition method) var m = findOverride(tbase, method); if (m != null) { - return m; + if (type.BaseType.IsGenericInstance) + { + //(type.BaseType as GenericInstanceType).GenericArguments + var reference = new MethodReference(m.Name, m.ReturnType, type.BaseType) + { + HasThis = m.HasThis, + ExplicitThis = m.ExplicitThis, + CallingConvention = m.CallingConvention + }; + foreach (var parameter in m.Parameters) + reference.Parameters.Add(new ParameterDefinition(parameter.ParameterType)); + foreach (var generic_parameter in m.GenericParameters) + reference.GenericParameters.Add(new GenericParameter(generic_parameter.Name, reference)); + return reference; + } + else + { + return m; + } } tbase = tbase.BaseType.Resolve(); } diff --git a/Tools/XLuaHotfixInject.exe b/Tools/XLuaHotfixInject.exe index 19224da3352c497849407e51b672aafa6e705766..061e1fbafd31293b89f056784204a389215a7117 100644 GIT binary patch delta 8694 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 delta 8223 zcmbVR33wD$wm!GEuIj2@s+TNe-=LH3ge5=-AUh}!marNK1Rn4t3Uo{Y1CFMnM4u># zco}CD=K-Q`)B!aH(I}2Y7!&~)WDGcn2F3+(#|;;F=iaJlgM;7uUVr4Tv!8R%t$V7v zX>1Z28-+V>&0g@}<1@hiybIZ&lO6!eP@r1EFW0YoWSV=^dVmQ`unFKtXD3G|=NDJM%C`V4o}SPXHONn2eS~00{EA z01BPEyhqDKVVF+3Q|j7Jy0=uhpE4u?76R>(k~S-HIr>E(2XIE`Bk18=aEPH~^fc7K zInkv>6j1%r@jOSI5jargmrc3w5FD4g0vrbj_@ywIQUUQ|X6OP#W`Il&r(Q;ysV}We zd4gqVq4U$axwa$eQll%G3Ml#t>lQVN-yHU}A3zDL^nNBP99;Cq3O{b|humTz!O#gSL=PC$~ z=~VAUp(#aQ{8?way~N~lbl=7DmoJhhKxd@=Oyi6m;2!k#%z%E7k-Twx=;xWivj0=5 z%EhI2=}d4zYFeIEY;DROdRta{m~Tp=y(#u0Q#w8Qz9icFvWLEr)zf$dYm@C|Q*U;G z@hS?G=xbK>qq6_g^*WMfTBoEnJ3Gc&sm8U@)cjdyRwTJI%^}ox#zYdpVLGb(*=BZR zWT#17OPGb->^G3M8x<$LI2@gklapt)lSdb$Wq3_ENBp^FZbXD|j(vMHDW_F7tLhWJ^YQ*S76o&3csCyIPI@^ocCq&y3JHv1RyYZq&XmW0^en%Pk7Bje` z`W(T;x+9|0{SyV(33bQt;snu1aD@|9?Owm6MBhdc-do4%%G^-w9b}?2nUNA%i07H{ zb?+kRHWTe&7AFvlaH3BLokYq7j%XELwJ086Y$%HVg+$@I$2~sbTtXf|N;JYW$Asu& zyb96x5FK^zBjRC~g`ZD6EyxQE=uG$j$VAuV9kLFoWVeSOQV9=feb@Z>L+Y^gPtxYD z?2zv7TJ#%-R5cx@`fm@ZX{q?Ja@fa;E!CD^`Y^?Xv=37Z8*9x3OUDnl6nD5GJhwA0 z8wgtbJh+65T?Rjt@uB`**}Ylaoe3`G@c|k&sK1IR(l>F2jcFOGokbw^n`*g>b_W_-epWW$lQ~qSv1triE`T3n=$1J$y*s*$c z(b$<$FtHoUZ>Gnm#YczTvJX+$IWAu>7(+gwso|VH@l(67)0FoLAHq`N8XUkRFTqT| zKa|E6WUsY8Tr~WG!r2nz?i|x^2Cj^MSXdSFxLVvEycaIb`^`8(I|v;f>CxGk6_NCQ zd>(iE)jW=COt;Q?d|~%rjTCowUoGq(i`(dUyIGab7dB9j zZ=iWW1Fc+Mf2`0fWCPx+`{Id=175507nwzDz*{C4)oV*H9`Kh4XHE1%#euUmOcMOv zO**8=+u7D>Md>(BmKGJH{r0HdS(M>Eg$r@=Sg`j(M0+Mi|ia_BqcYfmE`+QclmpHl0Qpr$q-0WHp=JoG(-WpNgTsI;sB zqyB)J!p%7ErE>{IIPXjCfv?mKkFyg(KcZd#UgyuBw;m1QUmgugZ8^83wLSjcmF>?1 zDeTN7HvIH6oz!sdXF9pzJkVJ^ClR2J_e^x*YpT6rqQE_Mai5Bq||*8j|r6 zQV`gyX4JtrA09){*xRRSs*&G=mK;)1UZ*iD4NNWSWRx?(uZM>)R%fii6h>4r>ZUctpSnHBMZE|GGsLJ#7xkWAWHQkxthzSUfh|r#svujG>U_+qml*Xk zJ$up@q>Ir2{i1gP3DVR)IV6D&>61%fSd+^${>CP!M~iz^|jSY zuByYk6t2XLu5_Sm>SWm73&4xAoXe+<9)Z_A$XC)+eY=tQ)GYC*VPwGJhHw4=I4t=W z5CO03uY?XQ$s6{mSAlst!^b%uaX#bqLxRb+^f@P!uhgGG+~r^5QeYEm75JEAK9{$< z=|d&i?ykNgs6Oas_=B4sDd`=X?p2W4?Ox(?Ls)oOcEfbH;)=nYSg;$Cbp_>J91Qyh z7=GhYT-Vsz6hD(h5EXbwWf4AdeQUU3sh44*`&&bS`*bF6QJ7_x#<0V~?8mvf%L;s{ zc)H62;7+=(Ut-Ce;1N_8V0tG!FD^k$6tg@EJm_MJx&|#3DE2YBpYRycOAJOYr|aL`?AHI{U&;QplMA6e2OFqD)4kX^mI- z`ydW+F^m}uUkftaC^P(CWmtj|=3I)-N8vKWy@cT-0>hX%3h|7{=yHkCYdId|_#Q_h zGdTf<*OF1rSOUxu7&BO$fM}8m#4mX0KO z+TisN0?RqK7q0YqXvx6*SU{KHI~+Iw>tK-4MVBEnhjDkq7^9c2!IWG}ciult*WtTv z7Pmkfr@LT&$l@}Lsk#T6Y;KKnmTp2W&IcCrxaVp;2tV4~f5|m^0yGv{y1xdN$MhuF zijNm&`l)u4o&q(+jJq3V7_0Sk*lKh8{dembklWX?6g>x|94NB6McxBaE{w3bKe+y) z=fQHDYf`uAU14I0<@ce#Mehc?Y;Lt^z`{;ZHVqI`|L05JCei-9F{G z-W`4%VsUGf(|R#f4z;+G^4EGF_>OaT!%6v^-WTeJS-OqrR|2bXl(Qvm_sGToSU-;I zk~Vt{V_*z=j<=Mp4rF17&24gdk$ZOn)7^qwN8qxHxKmuW67UP5ak1`4TX#ZWIxjwr zu)jRv#g?&Du3QQC!Cp*J5@$N-f`o%$xNUh7GK@hm)#hF!8OC6^%I3BU8O9J;VRNg* zJY(q3x}U@hV;J0S>t;%M#&Gy^%x3RFb_6_TbM45Dgf^S|47pM8hRx}6o^d(6XLAPR z8CSr!Hg`SAGe(0}&eppUt`YK#F_2<&W5lpA7D6_cLV6ixFt|Ksnf`!l8VBXJ@PVav&l- z!EZnUY(%*TBiXw?^hHUhe2vNIYJ6W1V4a`QUm*%`meU>Fw;Q)dn;0tE6#)aiiZ2rq zWMDV~qd8h3;^}rQNVIJ%?OJ@V5N&%a@e@1&ODw`>!|Rp6lB@WtO~69tOE53K84=jw zW7X~U(K$myLUoYdHZ*lwBd@iAuhv2<-7f`5@Fo^a;04~DQ5b{3Yn=WyQkSKr?qS(9 zeOS8NGGW1(6CE=wJN6d$waQE3rCMl7UdQj}1T3^9Gi4@8<9)mp?FE=EYrqDDi6}!d zr?U{9_+(-7QbaG5BL<;@OR5QzKg=+OKP~rGauG)=AsEWl0gwWNA%KsH(U8jNR89xr z9!CXA7!HL+#$q^29`V=1T=>FVg_5({T9oVvu7_%PCwMPxh9mkWq@C*D5SP04!a#V* z(GI;~jrSOgfJuRNpjQv?8Vd&{QVriIEZ__1ewMsuI7t~8iihM2`vPa6r_g{qHU-No zC8ff6=U}uy;+;wE0Y4@k$mP{A%$!FyLvQC==zsz04Wx}+?O4gsyp2@azNzX4(h4WM zEo45IEP@T=u^DY-nD;eulsx8o6S22>jMUo>NBkdS%6I&_a6PZPiPt?^*rkSrQ?Mn7 ztrh-9U5wa+r<_1%jYy0=d`w`=eQHjqW!z8M7n8K@SBli7>GGtdkYdaWRn z{M&{5u);mU12D;jt$hGk=bGU~&s`(4WA)gBtz5mGFJL>@mJ9Q-^s{7@&xu_*uAG6L zJWVUG^d`B=zeL=_OUxp#=#63-(oN!7vc-S9xI$p}RVy@OL9O6L-+a8I)`_if(7QoA zfV;O%+{rT@hDk9js15GIezd`Ql_7I$gCZA0Pw-iBA79yFUe+S+ya=7!#ACeNom_H^ zYs;`Jcw6(ExRg}+z7{+1tIGFcsZbjfrB>7irLEk)RCpkeDRsbXGuA`;7jNdrc1xE9 zr%GR8f@AO_PcW2+8%m-)+*8i=(metV-X}ebtK1@uCWiu#A}%tvOKkP6Qk!sNa2Kcd zO8bNl)dNx+nc;aIB}x%{*wVa!ru5ZvOJP);6n_~oO*=l&%5DC`KP$_8O~KpUJg z*na=n>?gOuLfo=esKL9T4GUc$6ATfRSM$}Z5+3xekXH${-j#9%xy88(Bd{hP6-wnK zE?I~1*BTamFVdzfNiIjrEpm)qw#i>$P%q5Ipr2x(iRM>wzz(rjWNvft^_hkCDo2I6 ziWR5}(!{3okp2Oa9Tk>2Eo~2!R1+qdi8e=tf7p!~A{lPqNNn2>CJ(pk4sGa%mr}{`sNklju1Jfy zJbzV9Tv#bNNwjTyPV5c}NqvNoj}Gyq@)Z758y`fNY3i;;md!D*O;w ztThq#ML`qTB;SsUX%lzyE}kN6C}d%wUPMNZ7QR$(7u$r}{P$`*`I6i)5t=m>|I6?Y z;v#5Atbt>Q_0WO19NtH~9!?`R!snU~Rzd8LmIVXAwj**{~XDc@=Ta{gk>{zRc+I3okCg3v{@V)2|K6g(9+70^g znDMc5@&x5~%Du{1$Bm9>9Ira^)WPZub&0x6jj122U#TuFPwS^uX=^m9NsZ`#!RJN( za`cO6qjnWO+S%I+zi`DyZ3?~-v5$s7h*+P8@W%#5DfHQ~d0HXZ9L|JfJ4Sa&jroKo6)O{|68MWvMMVL-7EaR zHmexnDE7@_Wv=lxHmj;?)!R~b?I(n+qW$YaWKGMwx_T+n`G5B8CoBBj4VozaEd`h~ zdBo(k-;Uq+%B@!q*)g!Hl{cs=dA;s~u-zNp20 T-S@KaRqqzF@iVfnhvR<%Kq9{! diff --git a/Tools/XLuaHotfixInject.pdb b/Tools/XLuaHotfixInject.pdb index af3cbfcca7b7f3fc2eeb9850c754f3aa3283fadc..15b683d72ca1e29bb8608b1ff52ec7e0444efb37 100644 GIT binary patch delta 8381 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