1264 {
1265 CallSite<Action<CallSite, T0, T1, T2, T3, T4, T5>> callSite = (
CallSite<Action<CallSite, T0, T1, T2, T3, T4, T5>>)site;
1266 Action<CallSite, T0, T1, T2, T3, T4, T5> target = callSite.
Target;
1268 Action<CallSite, T0, T1, T2, T3, T4, T5>[] rules;
1269 Action<CallSite, T0, T1, T2, T3, T4, T5>
action;
1270 if ((rules =
CallSiteOps.GetRules(callSite)) !=
null)
1271 {
1272 for (
int i = 0;
i < rules.Length;
i++)
1273 {
1275 if ((
object)
action != target)
1276 {
1277 callSite.Target =
action;
1278 action(site, arg0, arg1, arg2, arg3, arg4, arg5);
1280 {
1283 return;
1284 }
1286 }
1287 }
1288 }
1291 for (int j = 0; j < rules.Length; j++)
1292 {
1293 action = (callSite.Target = rules[j]);
1294 try
1295 {
1296 action(site, arg0, arg1, arg2, arg3, arg4, arg5);
1298 {
1300 return;
1301 }
1302 }
1303 finally
1304 {
1306 {
1309 }
1310 }
1312 }
1314 object[] args = new object[6] { arg0, arg1, arg2, arg3, arg4, arg5 };
1315 while (true)
1316 {
1317 callSite.Target = target;
1318 action = (callSite.Target = callSite.
Binder.BindCore(callSite, args));
1319 try
1320 {
1321 action(site, arg0, arg1, arg2, arg3, arg4, arg5);
1323 {
1325 break;
1326 }
1327 }
1328 finally
1329 {
1331 {
1333 }
1334 }
1336 }
1337 }
static bool GetMatch(CallSite site)
static void ClearMatch(CallSite site)
void ReleaseMatchmaker(CallSite matchMaker)