예제 #1
0
        public ClassDeclarationSyntax Build(string typeName, Type origin, params Type[] ctorArguments)
        {
            var originType  = origin.GetSymbols(_compilation);
            var arguments   = ctorArguments.Select(x => x.GetSymbols(_compilation)).Where(x => x != null).ToArray();
            var typeBuilder = new TypeBuilder();

            var ctorResult    = _ctorBuilder.Create(typeName, originType, arguments);
            var methodsresult = _methodsBuildere.CreateMethods(originType, ctorResult);

            var declaration = typeBuilder.CreateClassDeclaration
                              (
                typeName: typeName,
                baseTypes: new[] { originType },
                ctor: ctorResult.Ctor,
                fields: ctorResult.Fields,
                methods: methodsresult.Methods
                              );

            return(declaration);
        }