RainbowMage / OverlayPlugin

Other
132 stars 182 forks source link

[WIP] Fix addon loader #16

Closed xtuaok closed 9 years ago

xtuaok commented 9 years ago

use GetInterface() instead of IsAssignableFrom() http://www.hanselman.com/blog/DoesATypeImplementAnInterface.aspx

よくわかりませんが IsAssignableFrom() では IOverlayAddon 実装クラスでもfalseが返ってくるので上記の記事を参考に変えました。

また、addon のアセンブリから OverlayTypeManager.RegisterOverlayType()を呼んでもOverlayPluginのOverlayTypeManagerには登録されませんでした。こちらは未だ解決しておりません。

RainbowMage commented 9 years ago

https://github.com/xtuaok/ACT_EnmityPlugin/tree/overlay-0300-addon をチェックアウトして試してみましたが、こちらの環境では正常に動作しています。

v0.3.0.0 から、カスタムアセンブリリゾルバ(RainbowMage.OverlayPlugin.PluginMain.CustomAssemblyResolve())の内容が変更になっており、自分自身の解決を要求された場合は Assembly.GetExecutingAssembly() で解決するようにしております。

旧バージョンのリゾルバが何らかの理由で有効になっている場合(たとえば、旧バージョンの OverlayPlugin がロードされたままになっている等)、旧バージョンのリゾルバで解決されてしまうために新バージョンでの変更が効かなくなり、新たに Assembly.LoadFile(string) でアセンブリを読み込んでしまい、自分自身のアセンブリ由来の IOverlayAddon が実装されていないと認識されてしまっている可能性がありますが、いかがでしょうか。

xtuaok commented 9 years ago

すみません、環境をゼロから改めました所動作いたしました。 このPRは取り下げます。