を渡し、我々は我々がそれを使用してプラグインの多くを持ってアセンブリAに.NETプラグイン:共通のインターフェイスのバージョンが変更さは、データ
public class PluginData { public string Data { get; set; } }
public interface IPlugin { public PluginData Get(); }
をプラグインインターフェイスを定義するとします。次に、プラグインインタフェースを変更してもう1つのメソッドを追加すると、プラグインインタフェースアセンブリはv1.1になりました。
public class PluginData { public string Data { get; set; } }
public interface IPlugin
{
public PluginData Get();
public void Process(PluginData data);
}
さて、
var data = new PluginV10().Get();
new PluginV11().Process(data);
を行う方法はありますか?
私が今見る唯一の解決策は、XML方式へ/からカスタムを持つ、それをデシリアライズ/シリアライズすることにより、手動データをマーシャリングすることで、リフレクションを使用して呼び出さなど
私の場合、 'Get()/ Process()'メソッドが同じ 'PluginData'クラスを参照する限り、コードスニペットは問題ありませんか? – sll
'assembly'タグは、.NETアセンブリではなく、低レベルプログラミング用です。 – harold
コードスニペットの問題は、PluginData型が互換性がないことです。 PluginV11はPluginData v11バージョンを期待しています。逆も同様です。異なるアセンブリバージョンのタイプは互換性がありません。例えば。 http://blogs.msdn.com/b/thottams/archive/2007/04/11/two-versions-of-an-assembly-in-an-appdomain.aspx – queen3