アセンブリBの型T(参照型、クラス)に(静的に)依存するアセンブリAがあります。.NETランタイムは、2つのタイプが同じであることをどのように判断しますか?
私はアセンブリAを所有していませんが、アセンブリBを所有しています。幸運にもAはリフレクションを使ってそのメンバーを発見します。
B(とT)を動的に作成したいと考えています。唯一重要なのは、AとBを動的に作成したメンバー(メンバーではない)が、Aがコンパイルされたときに静的にコンパイルされたものと同等であることを確認する必要があることです。
- 反射Emitを使用してBとTを作成できます。問題ありません。 Aは、Aが(手書きBおよびT)等価に対して、コンパイルされている場合、私は動的T、問題なくしかしながら
- を変更することができ、このB.DLLに対してコンパイルされた場合
- Iディスク
- にB.DLLを書き込むことができますAのT 'は同じアセンブリ名と型名を持ちますが、動的に作成されたものとはみなされません。
その理由がその型のGUIDプロパティであると仮定します。 B.dllをディスクに書き込むと、Tタイプは、たとえメンバを変更しても、動的に作成できるものと同じGUIDを持ちます。しかし、「それ以外の同等の」手書き型は、同じGUIDを共有しません。
要約すると、動的に作成されたものの、静的に作成されたものとは異なる場合、GUIDは同じです。 GUIDは毎回同じです(再コンパイルしても同じです)。動的タイプの内容を変更すると、GUIDは同じになります。
ランタイムは、2つのタイプが同じかどうかをどのように判断しますか?このGUIDはどのように作成されますか?このGUIDなどを使用していますか?このGUIDをアセンブリのAに一致させるために私のdimamicアセンブリに割り当てることは可能ですか?
このGUIDを静的に調べることができますか(反射器またはildasmで見ることはできませんでした)。
注:アセンブリが署名されていないと仮定します。