2012-01-27 63 views
0

替換基類的所有實例這是一個有點硬在標題解釋,但這裏是我的情況。我有現有的代碼,並始終使用標準的文本框。我決定我需要爲Textbox類添加功能,所以我創建了從Textbox派生的MyTextbox並添加了我需要的內容。現在我想永久使用MyTextbox而不是Textbox。我應該能夠強制Textbox(現在和未來)的所有實例使用MyTextbox。與子類C#

我已經用C做過類似的事情++沿

typedef Textbox MyTextbox; 

如果這是有道理的曲調,是有可能在C#中嗎?

+4

我不知道確切的回答你的問題,但爲什麼不能你只是做一個查找文本框/替換到MyTextbox?下面是MSDN上類似的問題:http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/019a258e-8d50-4a9f-b0ef-8311208ebb6a – 2012-01-27 16:55:40

+1

這是一個初步的解決方案,但它不會阻止他人將來使用TextBox。 你能寫一個自定義的FxCop或StyleCop規則來告訴你的項目中的人不要直接使用TextBox嗎? – SirPentor 2012-01-27 16:59:26

+0

是的,我聽說過這個建議,它可能工作,但我想我想知道是否有一個更優雅的解決方案。我想在C++中使用全局typedef它更簡單,然後就沒有關係。 – jonmiller 2012-01-27 18:33:17

回答

0

爲什麼你需要再次提及TextBox類,如果你已經創建MyTextBox。請記住,MyTextBox具有TextBox及其自身功能的所有功能。

如果你想改變現有的所有文本框從您遵守對MyTextBox,你必須去手冊。編輯他們都因爲即使你通過.NET Framweork基礎類庫更改類型,異常將被拋出只要一個TextBox被稱爲

2

爲什麼不做大規模查找/在整個解決方案取代?這可以在Visual Studio中很容易地完成。

你可以做在每個文件使用一個Textbox頂部以下內容:

using Textbox = Custom.Namespace.MyTextbox; 

我不建議這樣做,因爲任何人看到的樣子在你的代碼可能沒有意識到標準的文本框實際上是你自己的自定義文本框。這在編譯相關代碼時也可能導致模糊不清。

+0

我想這可能是我所追求的。整個目標是讓未來的程序員儘可能容易地使用,而不是說他們使用MyTextbox而不是Textbox。我還聽到了一個建議,即在任何人試圖使用正規文本框的情況下,提供一些保護措施。 – jonmiller 2012-01-27 18:30:12

+0

由你自己決定,但按照@SirPentor的建議,實現一個自定義的FxCop或StyleCop規則,以確保沒有未來的開發人員使用標準的「文本框」,否則無法防止這種情況。 – Bernard 2012-01-27 18:58:01