Пример #1
0
        public ITypeConfig FindOrCreateTypeConf
        (
            string className,
            INamedTypeSymbol typeToImplementSymbol,
            INamedTypeSymbol implementorSymbol
        )
        {
            implementorSymbol = implementorSymbol.GetNoTypeForNull(TheCompilation);

            if (className == null)
            {
                className = typeToImplementSymbol.CreateClassName(implementorSymbol);
            }

            ITypeConfig typeConfig = FindTypeConfig(className);

            if (typeConfig != null)
            {
                typeConfig.CheckMatches(typeToImplementSymbol, implementorSymbol);

                return(typeConfig);
            }

            return(CreateTypeConf(className, typeToImplementSymbol, implementorSymbol));
        }
Пример #2
0
        public ITypeConfig FindOrCreateTypeConfigUsingImplementorWithAttrs
        (
            INamedTypeSymbol typeToImplementSymbol,
            INamedTypeSymbol implementorTypeSymbol)
        {
            ImplementationClassNameAttribute implementationClassNameAttribute =
                implementorTypeSymbol.GetAttrObject <ImplementationClassNameAttribute>();

            string className;

            if (implementationClassNameAttribute != null)
            {
                className = implementationClassNameAttribute.ClassName;
            }
            else
            {
                className = typeToImplementSymbol.CreateClassName(implementorTypeSymbol);
            }

            ITypeConfig typeConfig =
                FindOrCreateTypeConf(className, typeToImplementSymbol, implementorTypeSymbol);

            if (implementorTypeSymbol.IsNoTypeOrNull())
            {
                throw new Exception("Roxy Usage Error: CreateWrapper should have a non-trivial Wrapper argument passed to it.");
            }

            if (!typeConfig.ConfigurationHasBeenCompleted)
            {
                typeConfig.ConfigurationCompleted();
            }

            return(typeConfig);
        }
Пример #3
0
        internal ITypeConfig CreateTypeConf
        (
            string className,
            INamedTypeSymbol typeToImplementSymbol,
            INamedTypeSymbol implementorSymbol
        )
        {
            if (className == null)
            {
                className = typeToImplementSymbol.CreateClassName(implementorSymbol);
            }

            TypeConfig result =
                new TypeConfig
                (
                    this,
                    className,
                    typeToImplementSymbol,
                    implementorSymbol
                );

            CheckAlreadyHasType(result.ClassName);

            this.AllCreatedTypes.Add(result);

            return(result);
        }