最初の解決策:
protected internalは、同じアセンブリでパブリックとして機能し、他のアセンブリでは保護されています。
継承によって公開されないクラスの各メンバーのアクセス修飾子を変更する必要があります。
ただし、このソリューションでは、クラスを継承して別のアセンブリで使用する必要があり、強制することは少し制限的です。したがって、継承によってのみ使用されるかどうかの選択は、知らない親によって行われます...通常、子供はアーキテクチャをよりよく知っています...
完全な解決策ではありませんが、インターフェイスを追加してメソッドを非表示にし、親メソッドを使用して子クラスを非表示にする可能性を残すよりも優れた代替手段になる可能性があります。これは、インターフェイスの使用を簡単に強制できないためです。
問題:
protectedおよびprivateアクセス修飾子は、ingインターフェイスを実装するメソッドには使用できません。つまり、保護された内部ソリューションは、インターフェイスで実装されたメソッドには使用できません。これは大きな制限です。
最終的解決:
メソッドを非表示にするインターフェイスソリューションに戻りました。
それに関する問題は、非表示にするメンバーが常に非表示になり、間違いを確実に回避できるように、インターフェイスの使用を強制できることでした。
interface のみを強制的に使用するには、コンストラクターを保護し、構築用の静的メソッドを追加します(New という名前を付けました)。この静的な New メソッドは実際にはファクトリ関数であり、インターフェイスを返します。したがって、コードの残りの部分はインターフェイスのみを使用する必要があります。