【发布时间】: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/NJsonSchema 或gitter.im/NJsonSchema/NJsonSchema 提出问题,作者反应相当迅速。
-
当然,这可能是一个错误。希望他能看到这个标签并在这里关注问题——如果它是一个错误,那可能是答案,或者它可能不是一个错误,在这种情况下,我只是用错了......
标签: c# .net json njsonschema