[seasar-dotnet:1754] S2Form のバインドに時間が掛かる

Takashi Nishikawa [E-MAIL ADDRESS DELETED]
2010年 6月 23日 (水) 21:53:58 JST


はじめまして。fpと申します。

[seasar-dotnet:1397] 「[S2Form] プロパティの多いPONOを
バインドすると時間がかかってしまう」で提起された表題の件
s2container.net-1.3.17 では解決済みとなっているようですが
table.ContainsKey(attribute.ControlName.ToLower())?

当方では100を超えるようなコントロールがある場合は
常にこの問題にぶつかります。

対策として _SetDataToControls での
Control[] controls = _GetControls(this);
foreach (Control control in controls) {
を以下のようなメソッドでHashTableを使用することで
PropertyInfo の ForEach 内のバインド処理速度の向上を
図っています。

private static void _GetAllControls(Control controls, Hashtable table)
{
  foreach (Control control in controls.Controls)
  {
    if (String.Equals(control.Name.ToLower(), String.Empty) == false)
      {
        table.Add(control.Name.ToLower(), control);
        _GetAllControls(control, table);
      }
    }
  }


あと、上記 Control[] controls = _GetControls(this); に加え

object[] attributes
 = formType.GetCustomAttributes(typeof(ControlAttribute), false);

を全てのメソッドで PropertyInfo の ForEach ループ外に
出しています。

本家で対応頂けるようなら幸いです。

宜しくお願い致します。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20100623/4a202e7f/attachment.html>


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