[seasar-dotnet:807] System.Windows.Forms.ControlクラスのSiteプロパティを自動バインディングの対象外にしてほしい

Toru Uetani [E-MAIL ADDRESS DELETED]
2008年 4月 4日 (金) 15:08:00 JST


上谷です。

急を要するものではありませんが、うまい解決が思い浮かばないので要望してみます。

現在、ウィザードのような形式で画面を切り替えるアプリケーションを作っています。
その時にFormを生成していく形式ではなくて、UserControlを切り替えていく形式にしました。

UserControlはS2Container経由で生成して、ロジックを自動バインディングしています。
そのときに「Siteプロパティが見つからない」というWARNログが出力されてしまいます。

解決策として、
1.自動バインディングしない
2.適当なSiteオブジェクト?を登録しておく
3.気にしない
を思いつきましたが、どれもすっきりしません。
S2Containerのソースを修正するのはちょっと避けたいです。

UserControlのSiteプロパティはControlから継承したものなので、Control.Siteプロパティを
自動バインディングの対象外にしていただけるとありがたいです。

きちんと検証したわけではないですが、Seasar.Framework.Container.Util.AutoBindingUtilクラスの
IsSuitable(Type, object, string)を以下のように修正すれば問題ないと思います。
自分のアプリケーションだと警告は出なくなりました。

        public static bool IsSuitable(Type propertyType, object
component, string propertyName)
        {
            if (component is System.Windows.Forms.Control &&
"Site".Equals(propertyName))
            {
                return false;
            } else if (component is System.Windows.Forms.Form
                    && ("AcceptButton".Equals(propertyName)
                        || "CancelButton".Equals(propertyName)))
            {
                return false;
            } else {
                return IsSuitable(propertyType);
            }
        }


--
┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏

 ┏━━━┓ 上谷 徹(Toru Uetani)
 ┃\_/┃ mail:[E-MAIL ADDRESS DELETED]
 ┗━━━┛
┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏


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