[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 メーリングリストの案内