3

私は .NET のプロジェクトで作業していますが、その一部は RS232 (com ポート) 経由でコンピュータに接続されたデバイスと通信する必要があります。デバイスの製造元から API を受け取りましたが、これは C# で記述されています。

C# でクラス ライブラリを作成し、それをこの API のラッパーとして使用して、すべての呼び出しをここに集中させ、最初の呼び出しでのみ初期化する必要があるため、API メイン クラスのインスタンスを 1 つだけ使用したいと考えています。(シングルトンを使用する必要があると思います)

API には内部クラスと列挙子があり、一部のパブリック メソッドは内部クラスをパラメーターとして要求します。

私の疑問は次のとおりです。ラッパーのユーザーにこれらの API 内部クラスをパラメーターとして要求する必要がありますか、それとも API 内部クラスをラッパーの外部に公開することはお勧めできませんか?

また、API も C# で記述されているため、そのラッパーを記述するのが良い考えであるかどうか疑問に思っています。

4

2 に答える 2

3

このプロジェクトにどれだけの時間/リソースを投資するか、またはこのプロジェクトに投資できるかによって大きく異なります。

絶対に良い選択は、APIラッパー クラスの消費者から内部実装を完全に隠すことです。このようにして、新しいデバイス、デバイス用の新しいドライバー (わずかに異なるAPI)、または別のメーカーから完全に異なる完全に新しいデバイスを取得する場合、それらAPIを再びクラスにラップし、すべての「低」を非表示にします。ユーザーからの「レベル」実装の詳細。彼は気にしない可能性が高い..

しかし、それは多くの作業になる可能性APIがあり、メーカーのオリジナルがどれほど大きく、または良いかによって異なります。

お役に立てれば。

于 2012-08-06T19:18:13.080 に答える
1


ラッパーを使用することは素晴らしいアイデアです。正しい方向に進んでいます。ラッピングによりコードの再利用が可能になり、前述のように、オブジェクトの有効期間を管理するシングルトンを作成できます。

内部クラスについて: 内部クラスを公開すると、非常に悪い API に見えます。これは、これらのクラスのインスタンスを作成できないため、これらのメソッドを使用できないことを意味します。また、ラッパーの消費者も作成できません。
したがって、実際にこの API の状況である場合は、この事故を公開するのではなく、確実に非表示にする必要があります。

幸運を!

于 2012-08-06T19:26:37.790 に答える