2012-08-06 34 views
3

我在一個項目在.NET和部分的工作,它需要通過RS232(COM端口)連接的設備連接至計算機進行通信。我已收到設備製造商提供的API,並使用C#編寫。創建Wrapper類時,我應該在.NET中使用API​​的內部類嗎?

我想在c#中編寫一個類庫,並將其用作此API的包裝器,以便在此處集中調用所有調用,並僅使用API​​主類的一個實例,因爲它只應在第一個呼叫。 (我想我必須用辛格爾頓)

API有內部類和枚舉,以及它的一些公共方法要求一個內部類作爲參數。

我的疑問是:我應該請我的包裝的用戶的API內部類作爲參數,或者它不暴露在包裝外部的API內部類中的好的做法呢?

而且我懷疑,如果是編寫包裝的API也用C#編寫一個好主意,也許我縮腰我的時間?

回答

3

非常取決於有多少時間/資源你會投入到這個項目中,或者你可以投資這個項目。

絕好的選擇是完全隱藏從消費者內部API實現你的包裝類。這樣,如果您將獲得新設備或設備的新驅動程序(具有略微不同API)或完全不同API來自不同製造商的新設備,您將再次包裝到您的隱藏所有用戶的「低級」實施細節,這很可能是他不在乎的。

但是它可能會有很多工作,取決於寫好的大或好的程度。原廠API

希望這會有所幫助。

+0

謝謝蒂格蘭。據我所知,該API不會從我已經收到的版本中進行市長變更。例如,API有一個方法SENDPOSITION(GPSPosition位置),我應該問我的包裝的消費者一個GPSPosition對象發送到我的功能,然後我送這個給API函數?還是應該隱藏這個內部類? – 2012-08-06 19:28:34

+0

@Frank_:國際海事組織,它是更好地隱藏,但盯緊時間您在本 – Tigran 2012-08-06 19:32:30

1


使用的包裝是一個偉大的想法,你在正確的軌道上。 包裝將允許代碼重用,正如你提到的,你可以創建一個單獨將管理對象的生命週期。

關於內部類:似乎是一個非常糟糕的API,如果它暴露了內部類!這意味着你不能使用這些方法,因爲你不能創建這些類的實例 - 包裝器的使用者也不會。
所以,如果確實這是與該API的情況下,你一定要露出隱藏它這一不幸事件來代替。

祝你好運!

+0

感謝強尼要花錢,我犯了一個錯誤,當我說,「內部類」,我的意思是,他們是API內(我的錯,抱歉)。這些類是公共的,我可以實例化它們,所以它們可以被包裝器的使用者使用。有了這個,我應該使用我的消費者發送給我的參數在我的包裝中創建API類的實例,還是應該允許它們實例化API類並將其發送給我的包裝?謝謝! – 2012-08-06 19:51:13

+0

我的意見是要完全控制包裝的API。如果你公開所有的東西,那麼就不需要你的包裝了,更糟糕的是,它會以很多不同的方式使用(通過你的包裝器和內部),這將導致代碼重複和更少的可維護代碼。將包裝的接口僅限於應用程序中需要的接口,並在需要時提供更多接口。 – 2012-08-06 19:57:32

相關問題