在另一个文件中的类声明时导入类-打字机

时间:2019-06-19 13:48:48

标签: c# typescript typewriter

我正在使用typerwriter扩展名来创建与c#文件相对应的ts文件,但是类型中的某些变量在另一个文件中声明,因此我必须添加import语句。

要这样做,我想获取此文件中的所有类名,并且仅在此列表中的类名不存在时才添加导入。

在此示例中,BDTO在另一个文件中。

public class ADTO
{
    public uint id { get; set; }
    public uint editionId { get; set; }
    public BDTO mask { get; set; }
}

tst代码:

 string Imports(Class c, File f)
{
    IEnumerable<String> classes = f.Classes.Select(p=> p.name);

    IEnumerable<Type> types = c.Properties
        .Select(p => p.Type)
        .Where(t =>((!t.IsPrimitive  || t.IsEnum) && !classes.Contains(t.name)))
        .Select(t => t.IsGeneric ? t.TypeArguments.First() : t)
        .Where(t => t.Name != c.Name && t.Name != "DbGeography")
        .Distinct();
    return string.Join(Environment.NewLine, types.Select(t => $"import {{ {t.Name} }} from './misc';").Distinct());
}

$Classes(*DTO)[
$Imports

export interface $Name {
    $Properties[
    // $LoudName
    $name: $Type;]
}]

此添加项:$Imports代替:import {BDTO} from './misc'

1 个答案:

答案 0 :(得分:0)

我有同样的问题。我认为这是因为该方法只能采用Class类型的一个参数。

此示例显示解决问题的另一种方法: https://github.com/frhagn/Typewriter/issues/270