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

kubo [E-MAIL ADDRESS DELETED]
2009年 3月 26日 (木) 21:57:28 JST


久保(jflute)です。

石守さん、こんばんは

フィードバックありがとうございます!
JIRAに登録させて頂きました。
https://www.seasar.org/issues/browse/CONTAINERNET-118

申し訳ありませんが、ちょっとコミッタが皆忙しい状態で
なかなかすぐの修正が難しいかもしれませんがご了承下さい。

2009/3/26 Nobutaka Ishimori <[E-MAIL ADDRESS DELETED]>:
> お世話になっております、石守と申します。
>
> 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 メーリングリストの案内