SdkGenerator.ClassCreator.SetClassName C# (CSharp) Method

SetClassName() public method

public SetClassName ( string className, bool useTypeT ) : ClassCreator
className string
useTypeT bool
return ClassCreator
        public ClassCreator SetClassName(string className, bool useTypeT)
        {
            _targetUnit = new CodeCompileUnit();
            _targetClass = new CodeTypeDeclaration(className)
            {
                IsClass = true,
                TypeAttributes = TypeAttributes.Public
            };

            if (useTypeT)
            {
                _targetClass.TypeParameters.Add(new CodeTypeParameter("T"));
            }

            _codeNamespace.Types.Add(_targetClass);
            _targetUnit.Namespaces.Add(_codeNamespace);

            return this;
        }

Usage Example

Exemplo n.º 1
0
        public static void WriteClassProperties(Type classType, string outputFolder)
        {
            var className = classType.Name.Replace("`1", "");

            if (GenedClasses.Contains(classType.Namespace + "." + className))
            {
                return;
            }

            GenedClasses.Add(classType.Namespace + "." + className);


            if (classType.GetGenericArguments().Length > 0)
            {
                foreach (var genericArgument in classType.GetGenericArguments())
                {
                    if (!genericArgument.IsEnum)
                    {
                        WriteClassProperties(genericArgument, outputFolder);
                    }

                    if (genericArgument.IsEnum)
                    {
                        WriteEnum(genericArgument, outputFolder);
                    }
                }
            }

            var useTypeT = classType.IsConstructedGenericType;


            var folderName = classType.Namespace.Replace(".", @"\");

            var pathBuilder = new StringBuilder(outputFolder);

            pathBuilder.AppendFormat(@"{0}\", folderName);

            if (!Directory.Exists(pathBuilder.ToString()))
            {
                try { Directory.CreateDirectory(pathBuilder.ToString()); }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }

            if (!File.Exists(pathBuilder + className + ".cs"))
            {
                var creator = new ClassCreator(classType.Namespace);
                creator.SetClassName(className, useTypeT);

                foreach (var prop in classType.GetProperties())
                {
                    if (prop.PropertyType.IsGenericType)
                    {
                        foreach (var t in prop.PropertyType.GetGenericArguments())
                        {
                            if (t.IsClass && !t.FullName.StartsWith("System"))
                            {
                                WriteClassProperties(t, outputFolder);
                            }

                            if (t.IsEnum && !t.FullName.StartsWith("System"))
                            {
                                WriteEnum(t, outputFolder);
                            }
                        }

                        creator.AddProperties(prop.Name, prop.PropertyType);
                    }
                    else
                    {
                        if (prop.PropertyType.IsClass && !prop.PropertyType.FullName.StartsWith("System"))
                        {
                            WriteClassProperties(prop.PropertyType, outputFolder);
                        }

                        creator.AddProperties(prop.Name, prop.PropertyType);
                    }
                }

                creator.GenerateCSharpCode(pathBuilder + className + ".cs");
            }
        }
All Usage Examples Of SdkGenerator.ClassCreator::SetClassName