Active Directory と通信してユーザー情報を取得するサーバー実行可能ファイルがあります。AD に加えて、この exe を使用すると、顧客は独自のプラグインを記述して、カスタム ユーザー ディレクトリと通信できます。
この実行可能ファイルには厳密な名前が付けられています。
次の記述は正しいですか。
厳密な名前のアセンブリが別のアセンブリを読み込むには、読み込まれたアセンブリも同じキーで署名されている必要があります。
アセンブリが厳密に署名されていない場合、次のコードは null を返します。アセンブリが適切に署名されていないことを示すエラーはありません。アセンブリに署名すると、IService のインスタンスが得られることに注意してください。これにより、読み込まれたアセンブリは強力に署名されている必要があると私は信じています。
Assembly assembly = Assembly.LoadFrom(path);
foreach (Type t in assembly.GetTypes())
{
if (t.GetInterface(typeof(IService).FullName) != null)
{
return (Activator.CreateInstance(t) as IService);
}
}
つまり、強力に署名されたアセンブリがあり、アセンブリ プラグインをサポートしている場合、それらも署名する必要があるということですか?プラグインの作成者は同じキーで署名する必要があります。それは正しく聞こえません。
最後に、IService インターフェイスを実装するだけでなく、別のアセンブリを参照するアセンブリも参照するアセンブリがあり、それぞれが異なるキーで署名されているとします。ロードしようとするとどうなりますか? それらはすべて同じ鍵で署名する必要がありますか?