Exemple #1
0
        PendingImplementation(TypeDefinition container, MissingInterfacesInfo[] missing_ifaces, MethodSpec[] abstract_methods, int total)
        {
            var type_builder = container.Definition;

            this.container          = container;
            pending_implementations = new TypeAndMethods [total];

            int i = 0;

            if (abstract_methods != null)
            {
                int count = abstract_methods.Length;
                pending_implementations [i].methods    = new MethodSpec [count];
                pending_implementations [i].need_proxy = new MethodSpec [count];

                pending_implementations [i].methods = abstract_methods;
                pending_implementations [i].found   = new MethodData [count];
                pending_implementations [i].type    = type_builder;
                ++i;
            }

            foreach (MissingInterfacesInfo missing in missing_ifaces)
            {
                var iface = missing.Type;
                var mi    = MemberCache.GetInterfaceMethods(iface);

                int count = mi.Count;
                pending_implementations [i].type       = iface;
                pending_implementations [i].optional   = missing.Optional;
                pending_implementations [i].methods    = mi;
                pending_implementations [i].found      = new MethodData [count];
                pending_implementations [i].need_proxy = new MethodSpec [count];
                i++;
            }
        }