private static CodeGenerateContainerInfo CreateAssetInfo(Utf8JsonMathTypeGenerateInfo info)
        {
            if (info == null)
            {
                throw new ArgumentNullException(nameof(info));
            }

            var assetInfo = new CodeGenerateContainerInfo {
                TypeName = info.Type.AssemblyQualifiedName
            };

            for (int i = 0; i < info.Count; i++)
            {
                CodeGenerateContainerInfo.MemberInfo member = CreateMember(i, info.IsVector);

                assetInfo.Members.Add(member);
            }

            return(assetInfo);
        }
        public static void GenerateFiles(List <Utf8JsonMathTypeGenerateInfo> infos, string folderPath)
        {
            if (infos == null)
            {
                throw new ArgumentNullException(nameof(infos));
            }
            if (string.IsNullOrEmpty(folderPath))
            {
                throw new ArgumentNullException(nameof(folderPath));
            }

            Directory.CreateDirectory(folderPath);

            for (int i = 0; i < infos.Count; i++)
            {
                Utf8JsonMathTypeGenerateInfo info      = infos[i];
                CodeGenerateContainerInfo    assetInfo = CreateAssetInfo(info);
                string path    = $"{folderPath}/{info.Type.Name}.{Utf8JsonExternalTypeEditorUtility.EXTERNAL_TYPE_ASSET_EXTENSION_NAME}";
                string content = EditorJsonUtility.ToJson(assetInfo, true);

                File.WriteAllText(path, content);
            }
        }