[seasar-dotnet:1292] Re: Dxoを使用する際にあるメソッドへのDatePatternAttribute の指定が、指定されていないメソッドに影響する

Hiroaki Fujii [E-MAIL ADDRESS DELETED]
2009年 4月 2日 (木) 07:16:49 JST


藤井です。

ご報告ありがとうございました。

https://www.seasar.org/issues/browse/CONTAINERNET-118
にて、対応いたしました。

今後ともよろしくお願いいたします。


Nobutaka Ishimori さんは書きました:
> お世話になっております、石守と申します。
> 
> Seasar.NetのDXOでDatePatternAtributeを使用する際に、
> 不具合と考えられる問題に遭遇いたしましたので、報告いたします。
> 
> あるメソッドへのDatePatternAttribute の指定が
> 指定されていないメソッドに影響します。
> 末尾に再現コードを添えておりますので、ご確認ください。
> 
> [問題となる現象]
> DatePatternAttributeのついたDXOのメソッドを実行した後、
> DatePatternAttributeのついていないDXOのメソッドを実行した際に、
> 直近に実行したDatePatternAttributeのついたDXOのメソッドの
> DatePatternAttributeの内容で処理が実行されます。
> 
> ・再現コードの実行結果
> Original Value               : 2009/04/10 0:00:00
> Converted Without DatePattern: 2009/04/10 0:00:00
> Converted With DatePattern   : 20090410
> Converted Without DatePattern: 20090410
> 
> [期待する結果]
> 他のメソッドのDatePatternAttributeの影響をうけない
> 
> ・再現コードの期待する実行結果
> Original Value               : 2009/04/10 0:00:00
> Converted Without DatePattern: 2009/04/10 0:00:00
> Converted With DatePattern   : 20090410
> Converted Without DatePattern: 2009/04/10 0:00:00
> 
> [環境]
> Visual C# 2005
> Seasar.Net 1.3.14
> 
> 以上、よろしくお願いいたします。
> 
> --
> Program.cs
> --
> using System;
> using System.Collections.Generic;
> using System.Text;
> 
> using Seasar.Quill;
> using Seasar.Quill.Attrs;
> using Seasar.Dxo.Interceptor;
> using Seasar.Dxo.Annotation;
> 
> namespace DateFormatLeak
> {
>     class Program
>     {
>         static void Main(string[] args)
>         {
>             DateFormatLeakDxo dxo =
> QuillInjector.GetInstance().Container.GetComponent(typeof(DateFormatLeakDxo))
>                 .GetComponentObject(typeof(DateFormatLeakDxo)) as
> DateFormatLeakDxo;
> 
>             DateValueDateTime dateTimeValue = new DateValueDateTime();
>             dateTimeValue.DateValue = new DateTime(2009, 04, 10);
>             // 2009/04/10 0:00:00 と出力
>             Console.WriteLine(string.Format("Original Value
>    : {0}", dateTimeValue.DateValue.ToString()));
> 
>             DateValueString stringValue;
>             stringValue = dxo.ConvertWithoutDatePattern(dateTimeValue);
>             // 2009/04/10 0:00:00 と出力
>             Console.WriteLine(string.Format("Converted Without
> DatePattern: {0}", stringValue.DateValue));
> 
>             // 20090410 と指定
>             stringValue = dxo.ConvertWithDatePattern(dateTimeValue);
>             Console.WriteLine(string.Format("Converted With
> DatePattern   : {0}", stringValue.DateValue));
> 
>             stringValue = dxo.ConvertWithoutDatePattern(dateTimeValue);
>             // 20090410 になる
>             Console.WriteLine(string.Format("Converted Without
> DatePattern: {0}", stringValue.DateValue));
> 
>             Console.Write("終了するには 'Enter' を押してください");
>             Console.ReadLine();
>         }
>     }
> 
>     /// <summary>
>     /// Dxoクラス
>     /// </summary>
>     [Aspect(typeof(DxoInterceptor))]
>     [Implementation]
>     public interface DateFormatLeakDxo
>     {
>         /// <summary>
>         /// DatePatternなしの変換
>         /// </summary>
>         /// <param name="dateTime">日付</param>
>         /// <returns>日付の文字列</returns>
>         DateValueString ConvertWithoutDatePattern(DateValueDateTime dateTime);
> 
>         /// <summary>
>         /// DatePatternありの変換
>         /// </summary>
>         /// <param name="dateTime">日付</param>
>         /// <returns>日付の文字列</returns>
>         [DatePattern("yyyyMMdd")]
>         DateValueString ConvertWithDatePattern(DateValueDateTime dateTime);
>     }
> 
>     /// <summary>
>     /// 日付を文字列でもつ
>     /// </summary>
>     public class DateValueString
>     {
>         private string dateValue;
>         /// <summary>
>         /// 日付文字列
>         /// </summary>
>         public string DateValue
>         {
>             get { return dateValue; }
>             set { dateValue = value; }
>         }
> 
>     }
>     /// <summary>
>     /// 日付をDateTimeでもつ
>     /// </summary>
>     public class DateValueDateTime
>     {
>         private DateTime dateValue;
>         /// <summary>
>         /// 日付文字列
>         /// </summary>
>         public DateTime DateValue
>         {
>             get { return dateValue; }
>             set { dateValue = value; }
>         }
> 
>     }
> }
> 
> --
> 石守伸崇
> [E-MAIL ADDRESS DELETED]
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> 



seasar-dotnet メーリングリストの案内