我正在尝试生成外部模块而不是类型定义文件。我相信我需要做以下事情:
我可以通过更改tt文件中的“输出扩展名”设置轻松更改文件的扩展名。
我无法弄清楚如何将模块拆分成单独的文件。
我无法弄清楚如何将Export关键字添加到每个界面。
答案 0 :(得分:0)
TypeLITE不支持生成多个文件。多个用户已经请求了此功能,但我不知道从单个tt文件生成多个文件的简单方法。
如果不更改库的源代码(export
),则无法添加 TsGenerator.cs
关键字。这是非常具体的要求,所以我可能不会将它添加到库中。
答案 1 :(得分:0)
TypeLite是一个很好的项目,但缺乏文档和示例,它是开源的,所以任何人都可以贡献并使其更好。
至于每个类创建一个文件,我使用下面的代码解决了它。
private static void GenerateTypeScriptContracts(string assemblyFile, string outputPath)
{
// Clean TS Folder
System.IO.DirectoryInfo di = new DirectoryInfo(outputPath);
foreach (FileInfo file in di.GetFiles())
{
file.Delete();
}
// --
var assembly = Assembly.LoadFrom(assemblyFile);
// If you want a subset of classes from this assembly, filter them here
var models = assembly.GetTypes();
foreach (var model in models)
{
var generator = new TypeScriptFluent()
.WithConvertor<Guid>(c => "string")
.WithMemberFormatter((identifier) => Char.ToLower(identifier.Name[0]) + identifier.Name.Substring(1));
generator.ModelBuilder.Add(model);
// Generate TS interface definitions
var tsClassDefinitions = generator.Generate(TsGeneratorOutput.Properties | TsGeneratorOutput.Fields);
File.WriteAllText(Path.Combine(outputPath, "I" + model.FullName.Replace("ProjectName.DtoModels.", "") + ".ts"), tsClassDefinitions);
}
}