【问题标题】:NJsonSchema - C# Code Generator Not Outputting NamespaceNJsonSchema - C# 代码生成器不输出命名空间
【发布时间】:2018-11-07 15:46:07
【问题描述】:

我有一系列 JSON 模式文件,我正试图输出到 POCO,并为此目的加载了 NJsonSchema.CodeGeneration.CSharp 库。在为模型指定命名空间时,看起来命名空间实际上并没有被输出到生成的代码文件中。正在编写 POCO,但对象周围没有命名空间声明。我希望每个文件中都有一个namespace MyApp.DataModels。我做错了什么?

以下是相关代码:

CSharpGeneratorSettings csGenSettings = new CSharpGeneratorSettings() {
    ClassStyle = CSharpClassStyle.Poco,
    HandleReferences = true,
    Namespace = "MyApp.DataModels"
};

var _resolver = new CSharpTypeResolver(csGenSettings);
_resolver.RegisterSchemaDefinitions(swaggerDoc.Definitions);
var generator = new CSharpGenerator(swaggerDoc, csGenSettings, _resolver);
var typeDef = generator.GenerateTypes();

foreach (CodeArtifact codeArtifact in typeDef.Artifacts)
{
    File.WriteAllText(Path.Combine(dirDestination, codeArtifact.TypeName + ".cs"), codeArtifact.Code);
}

【问题讨论】:

  • 我使用的是旧版本的 NJsonSchema,其中 GenerateTypes() 不可用,但我认为它只生成类。当调用 .GenerateFile() 时,它会在单个 namespace { ... } 块内生成所有类。
  • 话虽如此,您的用例可能只是作者的疏忽。尝试在github.com/RSuter/NJsonSchemagitter.im/NJsonSchema/NJsonSchema 提出问题,作者反应相当迅速。
  • 当然,这可能是一个错误。希望他能看到这个标签并在这里关注问题——如果它是一个错误,那可能是答案,或者它可能不是一个错误,在这种情况下,我只是用错了......

标签: c# .net json njsonschema


【解决方案1】:

调用这个方法:

https://github.com/RSuter/NJsonSchema/blob/master/src/NJsonSchema.CodeGeneration.CSharp/CSharpGenerator.cs#L83

用你的集合来渲染页眉/页脚,即命名空间...

【讨论】:

  • 我会试一试,看看会发生什么。现在,我只是用命名空间信息手动包围它。总体来说这个项目做得很好,非常有用!
猜你喜欢
  • 2012-12-05
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多