2012-01-27 10 views
0

これはタイトルで説明するのが少し難しいですが、私の状況です。私は既存のコードを持っており、全体を通して標準のテキストボックスを使用しています。 Textboxクラスに機能を追加する必要があると判断し、TextBoxから派生したMyTextboxを作成し、必要なものを追加しました。今私はテキストボックスの代わりにMyTextboxを永久に使用したい。テキストボックス(現在と将来)のすべてのインスタンスにMyTextboxを使用させることができるはずです。基本クラスのすべてのインスタンスを子クラスCに置き換えます。

私は、これは理にかなっている場合、それはC#で行うことが可能です?

typedef Textbox MyTextbox; 

の曲に沿ってC++で前に似た何かを行っていますか

+4

私はあなたの質問に正確な答えを知らないが、なぜあなただ​​けのMyTextBoxをテキストボックスに上の検索/置換しますできませんでしたか? MSDNで同様の質問があります:http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/019a258e-8d50-4a9f-b0ef-8311208ebb6a –

+1

これは初期の解決策ですが、将来TextBoxを使用します。 プロジェクトのメンバーにTextBoxを直接使用しないよう指示するカスタムFxCopまたはStyleCopルールを記述できますか? – SirPentor

+0

ええ、私はこの提案を聞いたことがあるかもしれませんが、より洗練されたソリューションがあるかどうか疑問に思っていました。私はそれがC + +で地球規模のtypedefそれだけで簡単だと思うし、それは問題ではない。 – jonmiller

答えて

0

MyTextBoxを既に作成している場合は、再度TextBoxクラスを参照する必要があります。 MyTextBoxには、TextBoxのすべての機能と独自の機能が備わっていることを覚えておいてください。

MyTextBoxに準拠するように既存のテキストボックスをすべて変更したい場合は、手動で行う必要があります。 .Net Framweork基本クラスライブラリから型を変更しても、TextBoxが呼び出されるたびに例外がスローされるため、すべて編集してください。

2

ソリューション全体で大量の検索/置き換えを行ってみませんか?これはVisual Studioで非常に簡単に行うことができます。

あなたはTextboxを使用して、各ファイルの先頭に次のことを行うことができます:あなたのコードでは、標準のテキストボックスのように見えるものを見、誰もがそれを実現しないかもしれないので、私はこれをお勧めしません

using Textbox = Custom.Namespace.MyTextbox; 

実際には独自のカスタムテキストボックスです。これは、関連するコードをコンパイルするときにもあいまいさを引き起こす可能性があります。

+0

これは私が後にしたものかもしれないと思います。全体の目標は、将来のプログラマーがテキストボックスの代わりにMyTextboxを使用するよりも、できるだけ簡単に使用することです。誰かが通常のテキストボックスを使用しようとすると主張するトップレベルに何らかの保護を加える提案もありました。 – jonmiller

+0

@SirPentorが推奨するように、今後の開発者が標準の 'Textbox'を使用しないようにカスタムFxCopまたはStyleCopルールを実装してください。そうしないと、これを防ぐ方法がありません。 – Bernard

1

MyTextBoxの代わりにTextBoxを使用するすべての人が新しい機能を利用できるようにする別の方法は、拡張メソッドを使用することです。そうすれば、誤ったクラスを使用しているユーザーについて心配する必要はありません。

拡張メソッドのMSDNの記事:http://msdn.microsoft.com/en-us/library/bb383977.aspx

関連する問題