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);
        }
Beispiel #2
0
 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;
 }
Beispiel #4
0
 public InvokeMemberCallSite(int id, String memberName, IList <String> parameters, CallSiteContainer callSiteContainer) : base(id, memberName, callSiteContainer)
 {
     Parameters = parameters;
 }