1181 {
1182 CallSite<Action<CallSite, T0, T1, T2, T3, T4>> callSite = (
CallSite<Action<CallSite, T0, T1, T2, T3, T4>>)site;
1183 Action<CallSite, T0, T1, T2, T3, T4> target = callSite.
Target;
1185 Action<CallSite, T0, T1, T2, T3, T4>[] rules;
1186 Action<CallSite, T0, T1, T2, T3, T4>
action;
1187 if ((rules =
CallSiteOps.GetRules(callSite)) !=
null)
1188 {
1189 for (
int i = 0;
i < rules.Length;
i++)
1190 {
1192 if ((
object)
action != target)
1193 {
1194 callSite.Target =
action;
1195 action(site, arg0, arg1, arg2, arg3, arg4);
1197 {
1200 return;
1201 }
1203 }
1204 }
1205 }
1208 for (int j = 0; j < rules.Length; j++)
1209 {
1210 action = (callSite.Target = rules[j]);
1211 try
1212 {
1213 action(site, arg0, arg1, arg2, arg3, arg4);
1215 {
1217 return;
1218 }
1219 }
1220 finally
1221 {
1223 {
1226 }
1227 }
1229 }
1231 object[] args = new object[5] { arg0, arg1, arg2, arg3, arg4 };
1232 while (true)
1233 {
1234 callSite.Target = target;
1235 action = (callSite.Target = callSite.
Binder.BindCore(callSite, args));
1236 try
1237 {
1238 action(site, arg0, arg1, arg2, arg3, arg4);
1240 {
1242 break;
1243 }
1244 }
1245 finally
1246 {
1248 {
1250 }
1251 }
1253 }
1254 }
static bool GetMatch(CallSite site)
static void ClearMatch(CallSite site)
void ReleaseMatchmaker(CallSite matchMaker)