[seasar-dotnet:808] Re: System.Windows.Forms.ControlクラスのSiteプロパティを自動バインディングの対象外にしてほしい
Hiroaki Fujii
[E-MAIL ADDRESS DELETED]
2008年 4月 4日 (金) 21:28:35 JST
藤井です。
log4netのWARNログのことでよろしいでしょうか?
log4netのログの出力を抑える方法の一つとして、App.Configでlog4netの
設定を下記のように行います。
<filter type="log4net.Filter.StringMatchFilter">
<StringToMatch value="プロパティ(Site)が見つからないので設定を
スキップします" />
<AcceptOnMatch value="false"/>
</filter>
はしょっていますので、公開しているサンプル集の中のWindowsForm
アプリケーションサンプルのサンプルソリューションを見てください。
その中でWindowsFormのプロジェクトの中のApp.Configに設定しています。
このやり方ではだめでしょうか?
質問を勘違いしていたらすいません。
Toru Uetani さんは書きました:
> 上谷です。
>
> 急を要するものではありませんが、うまい解決が思い浮かばないので要望してみます。
>
> 現在、ウィザードのような形式で画面を切り替えるアプリケーションを作っています。
> その時に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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
seasar-dotnet メーリングリストの案内