Typelite Fluent模块名称更改

Typelite Fluent模块名称更改,typelite,Typelite,可以更改名称,如教程中所示: TypeScript.Definitions() .ForLoadedAssemblies() .WithFormatter((type, f) => "I" + ((TypeLite.TsModels.TsClass)type).Name) 如何使用fluent formatter更改模块名称?目前,无法使用fluent配置全局更改模块名称 但是,您可以根据每个类更改模块名称: TypeScript.Definitions().For<

可以更改名称,如教程中所示:

TypeScript.Definitions()
    .ForLoadedAssemblies()
    .WithFormatter((type, f) => "I" + ((TypeLite.TsModels.TsClass)type).Name)

如何使用fluent formatter更改模块名称?

目前,无法使用fluent配置全局更改模块名称

但是,您可以根据每个类更改模块名称:

TypeScript.Definitions().For<MyClass>().ToModule("ModuleName")
TypeScript.Definitions().For().ToModule(“ModuleName”)

现在有一个新的加载,它接受
tsmodulenformatter
委托,以便您可以转换模块名称。例如,此代码将模块名称转换为命名空间的最后一部分(
MyCompany.Business.Module1
->
Module1
):


更新: 在最新版本的TypeLite1.1.2.0中,API略有变化,因此前面的示例如下所示:

<#
var ts = TypeScript.Definitions().WithModuleNameFormatter((TsModuleNameFormatter)FormatModuleName)
#>
<#+
string FormatModuleName(TsModel module) {
    var parts = module.Name.Split(new []{'.'});
    var newName = parts[parts.Length - 1];
    return newName;
}
#>
<# var ts = TypeScript.Definitions()
    .WithModuleNameFormatter((module) => "I" + ((TypeLite.TsModels.TsModule)module).Name);#>

从TypeLite版本1.4.0开始,以下功能可以很好地更改模块名称:

<# var ts = TypeScript.Definitions()
    .WithModuleNameFormatter((module) => "my.module.name");#>
“my.module.name”)\
或者,您也可以使用已设置为模块名称的内容,以获得如下更多控制:

<#
var ts = TypeScript.Definitions().WithModuleNameFormatter((TsModuleNameFormatter)FormatModuleName)
#>
<#+
string FormatModuleName(TsModel module) {
    var parts = module.Name.Split(new []{'.'});
    var newName = parts[parts.Length - 1];
    return newName;
}
#>
<# var ts = TypeScript.Definitions()
    .WithModuleNameFormatter((module) => "I" + ((TypeLite.TsModels.TsModule)module).Name);#>
“I”+((TypeLite.TsModels.TsModule)module.Name);\

这实际上还可以,在全球范围内改变这一点很好,但这也可以。在全球范围内有效!我认为这个答案应该被选为正确答案。谢谢。@mentat您可以避免强制转换和写入:
module.Name
而不是
((TypeLite.TsModels.TsModule)module)。Name
有没有办法用格式化程序删除所有模块声明?因此,最终生成的文件只是接口和calss定义。