この質問は死んだように見えるので、私は賞金を提供することにしました。
私が知りたいのは、以下のETA1のシナリオが実行可能であり、使用されているかどうかです。そうでない場合は、なぜそうでないのかについての適切な説明が適切な答えになります。もう1つの良い答えは、代替手段です(ただし、internalsvisibleto属性は含まれません)。
最良の答えは、はい、それは実行可能であり、誰もがそれを行い、顧客はそれを愛することです!
ETA2:私は良い解決策を考えたと思います。私は、お客様のエディションと同じように機能するが、ライセンスがなく、属性を使用してクラスとメンバーが非表示になっている配布可能なエディションをお客様に提供します。これは、重要なすべてのメンバーに対してコンパイラ指令を使用して実行できますが、クラスのすべてのメンバーを非表示にするグローバルな方法があるかどうか疑問に思いました。
単純化されたシナリオ:-
何らかの方法でコントロールを拡張するクラスがあり、2つのライセンスでクラスを販売したい。
(1)標準-顧客は、私のクラスを使用しているが、クラス(その内部)をインスタンス化できないx個のコントロールを取得します。
(2)開発者-私のクラスを使用する独自のコントロールを作成できることを除いて、標準と同じです。
私の問題は、開発者の顧客がコントロールを販売するようになると、私のクラスをすべての顧客に公開せざるを得ないことです。
---これを無視する私のスクランブルされた心の中で、それを回避する唯一の方法は、開発者がどういうわけか私のアセンブリを彼らのアセンブリに統合することであり、そのようにしてコンストラクターを内部に保つことができます。または、属性に表示される内部を使用します。/これを無視してください---
ここの誰かが同じ状況にあったと確信しています、そしてどんな助けでも大いに感謝されるでしょう。
ETA1:ここで声を出して考えていますが、顧客が追加できる許容される呼び出しアセンブリ名のリストを作成することはできます。製品を出荷するとき、顧客のアセンブリはリストに含まれないため、特定のクラスをインスタンス化できません。(リストは明らかにハッシュ化できます)。