Exemple #1
0
        internal Type GetGeneratedType(CompilerResults results, bool useDelayLoadTypeIfEnabled)
        {
            // No Type is generated for no-compile pages
            if (!Parser.RequiresCompilation)
            {
                return(null);
            }

            // Figure out the Type that needs to be persisted
            string typeName;

            if (_instantiatableFullTypeName == null)
            {
                if (Parser.CodeFileVirtualPath != null)
                {
                    // Updatable precomp of a code separation page: use the intermediate type
                    typeName = _intermediateFullTypeName;
                }
                else
                {
                    // Updatable precomp of a single page: use the base type, since nothing got compiled
                    return(Parser.BaseType);
                }
            }
            else
            {
                typeName = _instantiatableFullTypeName;
            }

            Debug.Assert(typeName != null);

            Type generatedType;

            if (useDelayLoadTypeIfEnabled && DelayLoadType.Enabled)
            {
                string assemblyFilename = Path.GetFileName(results.PathToAssembly);
                string assemblyName     = Util.GetAssemblyNameFromFileName(assemblyFilename);
                generatedType = new DelayLoadType(assemblyName, typeName);
            }
            else
            {
                generatedType = results.CompiledAssembly.GetType(typeName);
            }

            // It should always extend the required base type
            // Note: removing this assert as advanced ControlBuilder scenarios allow changing the base type
            //Debug.Assert(Parser.BaseType.IsAssignableFrom(generatedType));

            return(generatedType);
        }
    internal Type GetGeneratedType(CompilerResults results, bool useDelayLoadTypeIfEnabled) {

        // No Type is generated for no-compile pages
        if (!Parser.RequiresCompilation)
            return null;

        // Figure out the Type that needs to be persisted
        string typeName;

        if (_instantiatableFullTypeName == null) {

            if (Parser.CodeFileVirtualPath != null) {
                // Updatable precomp of a code separation page: use the intermediate type
                typeName = _intermediateFullTypeName;
            }
            else {
                // Updatable precomp of a single page: use the base type, since nothing got compiled
                return Parser.BaseType;
            }
        }
        else {
            typeName = _instantiatableFullTypeName;
        }

        Debug.Assert(typeName != null);

        Type generatedType;
        if (useDelayLoadTypeIfEnabled && DelayLoadType.Enabled) {
            string assemblyFilename = Path.GetFileName(results.PathToAssembly);
            string assemblyName = Util.GetAssemblyNameFromFileName(assemblyFilename);
            generatedType = new DelayLoadType(assemblyName, typeName);
        }
        else {
            generatedType = results.CompiledAssembly.GetType(typeName);
        }

        // It should always extend the required base type
        // Note: removing this assert as advanced ControlBuilder scenarios allow changing the base type
        //Debug.Assert(Parser.BaseType.IsAssignableFrom(generatedType));

        return generatedType;
    }