2017-10-02 8 views
0

私は現在作業しているMVC Webアプリケーション内でカスタム構成セクションを使用しています。.NETカスタム設定:カルチャ不変/ XML形式を使用してDateTimeOffestプロパティをシリアル化しますか?

<add key="..." myDateProperty="10/02/2017 12:19:38 +01:00" /> 
:カスタム ConfigurationElement実装内タイプ System.DateTimeOffsetの次のプロパティ MyProperty考える:これはそうのように、(おそらく) en-US文化を使用して設定ファイルの中に連載されますなぜ

public class MyClass : ConfigurationElement 
{ 
    /// other properties... 

    [ConfigurationProperty("myDateProperty", IsRequired = true)] 
    public DateTimeOffset MyDateProperty 
    { 
     get 
     { 
      return (DateTimeOffset)this["myDateProperty"]; 
     } 

     set 
     { 
      this["myDateProperty"] = value; 
     } 
    } 
} 

誰も説明してもらえ

私は、値が文化不変フォーマットまたはXMLフォーマットでシリアル化されることを望んでいました。例えば、

<add key="..." myDateProperty="2017-10-02T12:19:38+01:00" /> 

日付関連のプロパティをシリアル化するためにカルチャ不変/ XML形式を指定するにはどうすればよいですか?または重要であってもなくてもよい

その他の詳細:

  • 私は(web.config内で参照)別の設定ファイルに値を書いています。
  • ターゲット.NET Frameworkはv4です。
  • アプリケーションのThread.CurrentCultureThread.CurrentUICultureの両方が暗黙的にen-GBに設定されています。
  • タイプをSystem.DateTimeに変更した場合も同じ問題が発生します。私にとって

答えて

0

が正常に動作します:

Thread.CurrentThread.CurrentCulture = new MyCultureInfo(CultureInfo.InvariantCulture.Name); 

MyDateTimeFormat:

public class MyCultureInfo : CultureInfo 
{ 
    ......implement constructors  

    private DateTimeFormatInfo dateTimeFormatInfo; 
    public override DateTimeFormatInfo DateTimeFormat { 
     get 
     { 
      if (dateTimeFormatInfo == null) 
      { 
       var dateTimeFormatInfo = new DateTimeFormatInfo(); 
       dateTimeFormatInfo.FullDateTimePattern = "yyyy-MM-ddTHH:mm:ssK"; 
       dateTimeFormatInfo.LongTimePattern = "yyyy-MM-ddTHH:mm:ssK"; 
      } 
      return dateTimeFormatInfo; 
     } 
    } 
} 
関連する問題