まず、これは教育的な質問です。私は C# の基礎を学んでいるので、実稼働アプリケーションに実装するものではありません。
現在、2 つ (実際には 3 つですが、1 つが単体テスト) のプロジェクトを含むソリューションがあります。
- 形
- クラス ライブラリ
クラス ライブラリ内にはDatabase.cs
、MySQL データベースと通信するクラスがあります。私はこのクラスと直接通信しませんDatabase.cs
が、クラス ライブラリ内の他のクラスは通信します (たとえばProducts.cs
)。ただし、この MySQL データベースに接続するには資格情報が必要ですが、安全に接続する方法がわかりません。
クラスライブラリ内に保存する/クラス内に資格情報をハードコーディングします。
ユーザーは簡単に DLL を取得でき、技術的にはデータベースへの資格情報を取得できるため、これは私には意味がありません。
フォームを介して資格情報をクラス ( などProducts.cs
) に渡し、そのクラスは Database オブジェクトの初期化中に資格情報を渡します。
動作する可能性があり、試してみると動作しますが、これが「最も適切な」方法であるかどうかはわかりません。
資格情報を持つプロパティを含む静的クラスを作成します
繰り返しますが、クラス ライブラリ内にこの静的クラスを作成すると、最初の例とほぼ同じになります。この静的クラスを 内に作成する場合はForm
、クラス ライブラリからフォーム プロジェクトへの参照を追加する必要があります (希望する方法ではありません)。
調べてみましたが、どうやら間違っているようです。これを行う他の方法はありますか?