예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
        }