private void GenInterface(BranchNode node, CodeNamespace parentInterfaceNamespaceContainer) { var interf = new CodeTypeDeclaration(node.InterfaceName) { IsInterface = true, BaseTypes = { Statics.IResourceProvider }, }; SetAccess(interf); AddAttribute(interf); AddMemberComment(interf, $"Path: {node.ResourcePath}"); parentInterfaceNamespaceContainer.Types.Add(interf); var myContainer = default(CodeNamespace); foreach (var item in node.Childern) { if (item is BranchNode b) { if (myContainer is null) { myContainer = new CodeNamespace(Helper.FormatNamespace($"{node.InterfaceNamespace}.{node.MemberName}")); InterfaceNamespaces.Add(myContainer); } GenInterfaceMember(b, interf); GenInterface(b, myContainer); } else if (item is LeafNode l) { GenInterfaceMember(l, interf); } } }
private void Generate() { var interns = new CodeNamespace(Helper.FormatNamespace(Config.InterfacesNamespace)); InterfaceNamespaces.Add(interns); foreach (var item in Roots) { GenInterface(item, interns); GenClass(item); GenClassMember(item); } }
public void Write(TextWriter writer) { foreach (var item in ResourceFiles) { GenHash(item, writer); } var p = new CodeCompileUnit(); p.Namespaces.AddRange(InterfaceNamespaces.ToArray()); p.Namespaces.Add(new CodeNamespace(Helper.FormatNamespace(Config.LocalizedStringsNamespace)) { Types = { LocalizedStringsClass } }); CodeDomProvider.GenerateCodeFromCompileUnit(p, writer, null); }