2011-10-18 11 views
0

ご迷惑をおかけして申し訳ございません。 私は、Spreadsにthirdparty contorlを使用しています。これにはcomboBoxCellType()があります。今、私はそのようなコードのすべての出現箇所が= 0 listwidthと呼ばれる余分な性質を持つようにしたいコードにプロパティを適用する最善の方法を見つける

ComboBoxCellType cbo = new ComboBoxCellType() 
cbo.OtherStuff... 

;: は私のコードでは、私はこのようなコードを持っている20ヶ所などがありますそのような 何か:

ComboBoxCellType cbo = new ComboBoxCellType() 
cbo.listwidth=0; 
cbo.OtherStuff 

一つの方法は、コードを検索し、それを手動で追加するだけです。私は、継承を使用してこれをオーバーライドするより良い方法があるのだろうかと思っていましたか?

答えて

1

ComboBoxCellTypeの新規作成に使用できる静的クラスを作成できます。このような

何か:このような0に設定listwidthプロパティで、このことができますアップ新しいComboBoxCellTypeインスタンスと

public static class ComboBoxCellTypeFactory 
{ 
    public static ComboBoxCellType Create() 
    { 
     return new ComboBoxCellType(){listwidth = 0}; 
    } 
} 

ComboBoxCellType cbo = ComboBoxCellTypeFactory.Create(); 
cbo.OtherStuff... 
+0

次に、 'ComboBoxCellType cbo = new ComboBoxCellType();'のインスタンスを 'ComboBoxCellType cbo = ComboBoxCellTypeFactory.Create();'で検索/置換することができます。 –

+0

ありがとう、私は今それを試してみる... – Bohn

+0

hmm..whatこのコンパイルエラーは何ですか? "静的クラス 'MyApplication.ComboBoxCellTypeFactor'は 'FarPoint.Win.Spread.CellType.ComboBoxCellType'型から派生することはできません。静的クラスはオブジェクトから派生する必要があります。 – Bohn

1

ComboBoxCellTypeの作成と初期化をメソッドにカプセル化し、以前にこれを行ったすべての場所からそのメソッドを呼び出します。

一般に、コードを繰り返す場合は、呼び出し可能なメソッドにコードを抽出できるかどうかを確認してください。コードDRYを保管してください。

ような何か:

private ComboBoxCellType BuildComboBoxCellType() 
{ 
    ComboBoxCellType cbo = new ComboBoxCellType() 
    cbo.listwidth=0; 
    cbo.OtherStuff... 

    return cbo; 
} 

そして、あなたの元のコードで:

ComboBoxCellType cbo = BuildComboBoxCellType(); 
+0

うーん、いいですね。私はアイデアを得ることができるいくつかのコードサンプルを私に見せてくれますか?おかげで – Bohn

+0

ohok、ありがと...よくcbo.OtherStuffはコードの異なる場所で非常に異なっています。それは私がそれをfacotrことができるものではありません。 facotrに共通する唯一のものはcbo.listwidth = 0です。 ...その場合、私はまだこの新しいBuildComboBoxCellType()を適用するコードのすべての場所に触れています...これは、必要な場所のどこでもcbo.listwidth = 0を書くのと同じです。継承はこの状況では機能しませんか? – Bohn

+0

@BDotA - 'OtherStuff'が何であるかに応じて、' Func 'または' Action 'デリゲートを使ってそれを抜き出すことができます。 – Oded

0

あなたがソースコードへのアクセス権を持っている場合、私はあなたのコンストラクタでthis.listwidth = 0を置くことを示唆しているにComboBoxCellType。

+0

私はしません。それは商業的なコントロールです。 (Farpoint Spread) – Bohn

関連する問題