示例#1
0
        private static NamedTypeSymbol CreateCallSiteContainer(SyntheticBoundNodeFactory factory, int methodOrdinal)
        {
            // We don't reuse call-sites during EnC. Each edit creates a new container and sites.
            int generation    = factory.CompilationState.ModuleBuilderOpt.CurrentGenerationOrdinal;
            var containerName = GeneratedNames.MakeDynamicCallSiteContainerName(methodOrdinal, generation);

            var synthesizedContainer = new DynamicSiteContainer(containerName, factory.TopLevelMethod);

            factory.AddNestedType(synthesizedContainer);

            if (factory.TopLevelMethod.IsGenericMethod)
            {
                return(synthesizedContainer.Construct(factory.TopLevelMethod.TypeParameters.Cast <TypeParameterSymbol, TypeSymbol>()));
            }

            return(synthesizedContainer);
        }