2017-02-19 19 views
0

抽象クラスの例を持つSDKを開発しています。 新しいSDKバージョンでは、抽象クラスを分割して、パラメータの一部がExample_BaseClassになるようにします。 "Example"は "Example_BaseClass"を継承しています。 この変更の影響を受けないExampleクラスを使用したプログラマ。インターフェイスを変更するときにタイプをロードできませんでした

私のコード(システム上のプラグインの種類)を新しいSDKでコンパイルして古いソフトウェアバージョン(古いSDKを使用している)に置くと、例外がスローされるという問題: 'Example_BaseClass'をロードできませんでしたアセンブリ '

透明であるはずですが、新しいクラスを検索するのが好きです。 このような下位互換性を維持することは可能ですか?

おかげで、あなたの新しいSDKで

答えて

0

ExampleクラスExample_BaseClass依存します。新しいSDKを使用してプラグインをコンパイルしたときに、コンパイルされたコードは次のようになります。

  • メインコード
  • ExampleExample_BaseClassに依存して(いくつかのメソッドにアクセスしたり、それから継承されます)Exampleに依存します。それを見つけようとし、実行時例外で失敗します。

後方互換性を維持する方法については、 C#は、バイナリコード(アセンブリ)ではなく中間層にコンパイルします。これにより、C#にはリフレクションのような利点があります。しかしそれは(あなたが見るように)コストがかかります。 CoreRT repoの人でなければ、コードをネイティブにバイナリにコンパイルする方法はありません.NugetパッケージとしてSDKを公開し、それを頻繁に更新し、多くの人にそれを聞かせてください。dotnet restore

関連する問題