Microsoft.Zing.Splicer.GenerateInterface C# (CSharp) Method

GenerateInterface() private method

private GenerateInterface ( Interface x ) : void
x Interface
return void
        private void GenerateInterface(Interface x)
        {
            TypeNode newClass = Templates.GetTypeTemplateByName("Interface");
            Replacer.Replace(newClass, newClass.Name, x.Name);
            TypeNode createMethods = (TypeNode)Templates.GetMemberByName(newClass.Members, "CreateMethods");

            for (int i = 0; i < x.Members.Count; i++)
            {
                ZMethod zMethod = x.Members[i] as ZMethod;
                Debug.Assert(zMethod != null);
                Class methodClass = GenerateInterfaceMethod(zMethod);
                newClass.Members.Add(methodClass);
                methodClass.DeclaringType = newClass;
                methodClass.Flags = (methodClass.Flags & ~TypeFlags.VisibilityMask) | TypeFlags.NestedFamORAssem;

                TypeNode tn = Templates.GetTypeTemplateByName("InterfaceExtras");
                Method member = (Method)Templates.GetMemberByName(tn.Members, "__CreateInterfaceMethod");
                member.Name = new Identifier("Create" + methodClass.Name.Name);
                Replacer.Replace(member, new Identifier("__InterfaceMethod"), methodClass.Name);
                member.DeclaringType = createMethods;
                createMethods.Members.Add(member);
            }

            // Add the emitted class to our Zing application class
            InstallType(newClass);
        }