Boo.Lang.Compiler.Steps.ProcessClosures.CreateClosureClass C# (CSharp) Метод

CreateClosureClass() приватный Метод

private CreateClosureClass ( Boo.Lang.Compiler.Steps.ForeignReferenceCollector collector, Boo.Lang.Compiler.TypeSystem.InternalMethod closure ) : BooClassBuilder
collector Boo.Lang.Compiler.Steps.ForeignReferenceCollector
closure Boo.Lang.Compiler.TypeSystem.InternalMethod
Результат Boo.Lang.Compiler.TypeSystem.BooClassBuilder
        BooClassBuilder CreateClosureClass(ForeignReferenceCollector collector, InternalMethod closure)
        {
            Method method = closure.Method;
            TypeDefinition parent = method.DeclaringType;
            parent.Members.Remove(method);

            BooClassBuilder builder = collector.CreateSkeletonClass(closure.Name, method.LexicalInfo);
            parent.Members.Add(builder.ClassDefinition);
            builder.ClassDefinition.Members.Add(method);
            method.Name = "Invoke";

            if (method.IsStatic)
            {
                // need to adjust paremeter indexes (parameter 0 is now self)
                foreach (ParameterDeclaration parameter in method.Parameters)
                {
                    ((InternalParameter)parameter.Entity).Index += 1;
                }
            }

            method.Modifiers = TypeMemberModifiers.Public;
            return builder;
        }