2013-11-15 81 views
0

我正在編寫一個相當大的庫,其中包含我自己設計的類或者用於較低級別的系統類的包裝。當我爲自己的課程寫了自己的包裝時,如何'隱藏'內置的類?

這樣的一個實例就像StreamReader或StreamWriter。這個事實是無關緊要的,但我寫了一個包裝器,它能夠爲每一個創建一個線程並連續讀取(例如) - 用於類似於TcpClient的東西。

把行話和不相關的信息放在一邊 - 這裏的問題是,有沒有一種方法可以用我自己的繼承類來隱藏在系統名稱空間的成員中?

我瞭解命名空間的工作,而且我可以引用「Namespace.Subspace.Class」當我有曖昧的引用,但我不知道是否有什麼辦法可以自動「喜歡」我的課了從系統中一個。

希望我已經明確了我所要求的;如果有人過去曾問過這個問題,我再次表示歉意。希望有一個答案。乾杯。

回答

1

不,沒有辦法讓您「重寫」其他程序集中的類。

如果你能這將是一個糟糕的設計元素恕我直言。如果我想使用你的特殊包裝,我會調用你的特殊包裝的實例,否則我想要我打算調用的類的行爲和已知的副作用。

+0

那麼......足夠公平。感謝您的信息。就個人而言......我覺得如果你要提供一個答案而不是批評這個問題,你應該加倍努力......這是一個包含所有必要信息的完整問題。抱歉;我只是問很多沒有得票的問題,即使他們以前沒有做過徹底的調查。而不管;謝謝(你的)信息。乾杯。 – DigitalJedi805

+0

你的問題沒有顯示研究工作,對我來說,似乎問這個問題是研究工作,這就是爲什麼我沒有投票。堆棧溢出應該是你的最後一招,而不是你的第一個。我強烈建議你仔細閱讀[The Stack Overflow Question Checklist](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist),如果你開始讓你的問題遵循這個清單,你將會收到更多上票。 –

+0

權利是一張醜陋的臉。我不會花費一個小時篩選搜索結果,這些搜索結果告訴我如何在自己的命名空間中創建一個類,或者如何覆蓋一般類,因爲我的主題實際上很模糊,只是爲了找到一些能夠告訴我的東西我不能做我希望的事情;當我可以在這裏問,並在幾分鐘內得到答案。除了它從未被問及的事實。我想,歡迎您提出意見;但如果你能在任何地方找到一個網站,告訴我這不能在20分鐘內完成,我會留下深刻的印象。 – DigitalJedi805

1

這看起來很明顯,但不包括「using System.IO;」在文件的頂部,而是包括「使用MyClasses.MyIOWrapper;」可能有幫助。這樣它將使用StreamReader等的實現,而不是系統的實現,除非你明確地告訴它使用系統。

+0

比上述更有效的答案 - 感謝你的想法 - 但這是顯而易見的解決方案 - 直到我意識到我有System.IO的其他用途。 – DigitalJedi805

+0

沒錯,沒有簡單的方法來做到這一點,因爲所有的系統類都是密封的。但是你仍然可以訪問System.IO類,它只需要一點額外的輸入,因爲你必須鍵入System.IO.Whatever,但它並不是真的那麼糟糕,因爲intellisense會爲你填充大部分內容。 – HypnoToad