public void WriteCallSiteContainer(CallSiteContainer callSiteContainer) { int indent = 1; this.Comment(indent, "=============== CALL SITE CONTAINER DECLARATION ==================="); this.WriteLine(indent, ".class public abstract auto ansi sealed beforefieldinit " + callSiteContainer.Name + " extends [mscorlib]System.Object"); this.WriteLine(indent++, "{"); foreach (var callSiteReference in callSiteContainer.CallSiteReferences) { callSiteReference.WriteDeclaration(indent, this); } this.WriteLine(indent, ".method private hidebysig specialname rtspecialname static void .cctor() cil managed"); this.WriteLine(indent++, "{"); this.WriteLine(indent, ".maxstack 7"); this.WriteLine(indent, ".locals init"); this.WriteLine(indent++, "("); for (int i = 0; i < callSiteContainer.CallSiteReferences.Count; i++) { this.WriteLine(indent, "class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[] V" + callSiteContainer.CallSiteReferences[i].Name + (i != callSiteContainer.CallSiteReferences.Count - 1 ? "," : "")); } this.WriteLine(--indent, ")"); foreach (var callSiteReference in callSiteContainer.CallSiteReferences) { callSiteReference.WriteInitialization(indent, this); } this.WriteLine(indent, "ret"); this.WriteLine(--indent, "} // end of method " + callSiteContainer.Name + "::.cctor"); this.WriteLine(--indent, "} // end of class " + callSiteContainer.Name); }
public GetMemberCallSite(int id, String memberName, CallSiteContainer callSiteContainer) : base(id, memberName, callSiteContainer) { }
protected AbstractCallSite(int id, String memberName, CallSiteContainer callSiteContainer) { this.MemberName = memberName; this.Id = id; this.CallSiteContainer = callSiteContainer; }
public InvokeMemberCallSite(int id, String memberName, IList <String> parameters, CallSiteContainer callSiteContainer) : base(id, memberName, callSiteContainer) { Parameters = parameters; }