私のチームは、カスタム アセンブリ全体で一元化された定数 (おそらく読み取り専用の静的変数) を管理する最善の方法を見つけようとしています。アセンブリがランタイムに動的に読み込まれる処理アーキテクチャを構築しました。データがシステムを通過するときに、一部のアセンブリが情報をディクショナリに書き込みます。この情報は、データを読み取って処理する別のアセンブリに渡されます。当社の製品が成熟し、お客様がさまざまな処理機能を必要とするようになると、書き込み/読み取りを行う新しいデータ フィールドを追加する必要があります。現在、コア dll で定数を定義していますが、新しいデータを取得したときにコア dll を再コンパイルする必要があるため、これは長期的には機能しません。その際、テスト チームは、新しいアセンブリによって提供される新しい機能をテストするだけでなく、アプリケーション全体を完全に回帰テストする必要があります。新しい定数を追加し、絶対に必要ではないものを再コンパイル/デプロイすることなく、どのデータが書き込まれているのかを知る方法を見つけようとしていました。
次の 2 つのオプションを検討しました。
定数のみを保持する定数 dll を作成します。新しいフィールドが必要な場合は、それらを dll に追加します (決して削除しないでください)。これの欠点は、dll への変更がシステム全体に影響を与えることです。そのため、完全な回帰テストが必要になる場合があります。
各アセンブリで読み取り/書き込みを行うすべてのフィールドを公開し、開発者の統合中に名前の不一致を探します。たとえば、Assembly1 が (Field1、Field2) を書き込み、Assembly2 が (field1、Field2) を読み取ると、ディクショナリ キーの大文字と小文字が区別されるため、(Field1 と field1) の不一致が生じます。これにより、定数アセンブリを使用できなくなりますが、不一致を検証するために追加のコードが必要になり、多少の結合が発生するようです。
注: 定数と言うとき、実際には定数を意味するわけではありません。最終的に使用するソリューションによっては、読み取り専用の静的を使用する可能性があります。
誰かがこのようなことをしたことがある場合、またはこれを達成する方法について何か考えがある場合は、ご意見をお待ちしております. 私たちの根本的な目的は、新しいアセンブリを展開するだけで新しい機能を提供できるようにすることです。