소스 검색

support enums in config

Scrublord1336 6 년 전
부모
커밋
2bfc3430ee
1개의 변경된 파일32개의 추가작업 그리고 4개의 파일을 삭제
  1. 32 4
      src/XUnity.AutoTranslator.Plugin.Core/Configuration/IniKeyExtensions.cs

+ 32 - 4
src/XUnity.AutoTranslator.Plugin.Core/Configuration/IniKeyExtensions.cs

@@ -16,12 +16,26 @@ namespace XUnity.AutoTranslator.Plugin.Core.Configuration
             var value = that.Value;
             if( string.IsNullOrEmpty( value ) )
             {
-               that.Value = Convert.ToString( defaultValue, CultureInfo.InvariantCulture );
+               if( typeof( T ).IsEnum )
+               {
+                  that.Value = Enum.GetName( typeof( T ), defaultValue );
+               }
+               else
+               {
+                  that.Value = Convert.ToString( defaultValue, CultureInfo.InvariantCulture );
+               }
                return defaultValue;
             }
             else
             {
-               return (T)Convert.ChangeType( that.Value, typeof( T ), CultureInfo.InvariantCulture );
+               if( typeof( T ).IsEnum )
+               {
+                  return (T)Enum.Parse( typeof( T ), that.Value, true );
+               }
+               else
+               {
+                  return (T)Convert.ChangeType( that.Value, typeof( T ), CultureInfo.InvariantCulture );
+               }
             }
          }
          else
@@ -29,12 +43,26 @@ namespace XUnity.AutoTranslator.Plugin.Core.Configuration
             var value = that.Value;
             if( value == null )
             {
-               that.Value = Convert.ToString( defaultValue, CultureInfo.InvariantCulture );
+               if( typeof( T ).IsEnum )
+               {
+                  that.Value = Enum.GetName( typeof( T ), defaultValue );
+               }
+               else
+               {
+                  that.Value = Convert.ToString( defaultValue, CultureInfo.InvariantCulture );
+               }
                return defaultValue;
             }
             else
             {
-               return (T)Convert.ChangeType( that.Value, typeof( T ), CultureInfo.InvariantCulture );
+               if( typeof( T ).IsEnum )
+               {
+                  return (T)Enum.Parse( typeof( T ), that.Value, true );
+               }
+               else
+               {
+                  return (T)Convert.ChangeType( that.Value, typeof( T ), CultureInfo.InvariantCulture );
+               }
             }
          }
       }