public NamespaceAssemblyReader(Assembly assembly) { _generator = new TSGenerator(assembly) { Modules = true }; _namespaces = new Dictionary <string, TSModule>(); foreach (var type in assembly.ExportedTypes) { var ns = type.Namespace.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var root = ns.First(); if (!_namespaces.ContainsKey(root)) { var module = new TSModule(root, _generator.GenerateLookupTypeName) { IsDeclared = true }; _namespaces.Add(root, module); } ns.RemoveAt(0); _namespaces[root].AddSubNamespaceType(ns, type); } }
public void AddSubNamespaceType(List <string> ns, Type type) { if (ns.Count == 0) { var ti = type.GetTypeInfo(); if (ti.IsEnum) { if (Settings.ConstEnumsEnabled) { var tsconstenum = new TSConstEnumeration(type) { IsExported = true }; Enumerations.Add(tsconstenum); } return; } var tsinterface = new TSInterface(type, _mapType) { IsExported = true }; Interfaces.Add(tsinterface); return; } var root = ns.First(); var mod = SubModules.FirstOrDefault(m => m.Name == root); if (mod == null) { mod = new TSModule(root, _mapType); SubModules.Add(mod); } ns.RemoveAt(0); mod.AddSubNamespaceType(ns, type); }
public void AddSubNamespaceType(List<string> ns, Type type) { if (ns.Count == 0) { if (type.IsEnum) { if (Settings.ConstEnumsEnabled) { var tsconstenum = new TSConstEnumeration(type) { IsExported = true }; Enumerations.Add(tsconstenum); } return; } var tsinterface = new TSInterface(type, _mapType) { IsExported = true }; Interfaces.Add(tsinterface); return; } var root = ns.First(); var mod = SubModules.FirstOrDefault(m => m.Name == root); if (mod == null) { mod = new TSModule(root, _mapType); SubModules.Add(mod); } ns.RemoveAt(0); mod.AddSubNamespaceType(ns, type); }