コード例 #1
0
        public static GenerationUnit GenerateDrm(string src, string defaultProjNamespace, string filePath)
        {
            Code.NotNull(src, nameof(src));
            Code.NotNullNorWhiteSpace(filePath, nameof(filePath));

            RefTable.Instance.TryRemoveDeclarations(filePath);
            var cUnit   = Compiler.Instance.CompileModuleOnFly(src, filePath);
            var cErrors = cUnit.Errors.Select(err => err.Flatten()).AsReadOnly();

            if (cErrors.Count > 0)
            {
                return(GenerationUnit.Error(cErrors, filePath));
            }

            var testDefs = cUnit
                           .OnlyValidModules()
                           .ValidModules
                           .Select(x => new ModuleDefinition(
                                       x.Name,
                                       x.ClassRegistrations.Select(y => new DependencyRegistration(y.Dependency, y.Implementation)).AsReadOnly(),
                                       x.ModuleRegistrations.Select(y => new ModuleRegistration(y.Name)).AsReadOnly()))
                           .AsReadOnly();
            var templateModel = new ModuleTemplateModel(defaultProjNamespace, testDefs);
            var template      = new ModuleTemplate(templateModel);
            var csSrc         = template.TransformText();

            return(GenerationUnit.Complete(Encoding.UTF8.GetBytes(csSrc), filePath));
        }
コード例 #2
0
        public ModuleTemplate(ModuleTemplateModel model)
        {
            Code.NotNull(model, nameof(model));

            Model = model;
        }