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