我正在使用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'
答案 0 :(得分:0)
我有同样的问题。我认为这是因为该方法只能采用Class
类型的一个参数。
此示例显示解决问题的另一种方法: https://github.com/frhagn/Typewriter/issues/270