импортировать классы при объявлении класса в другом файле - пишущая машинка - PullRequest
0 голосов
/ 19 июня 2019

Я использую расширение typerwriter для создания файла ts, соответствующего файлу c #, но есть переменные типа, объявленные в другом файле, поэтому мне нужно добавить оператор импорта.

, чтобы сделать это, я хочучтобы получить все имена классов в этом файле и добавить импорт, только если имя класса отсутствует в этом списке.

в этом примере 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'

...