5

PCL で遊ぶことに決め、クラス ライブラリを PCL に変換しました。

驚くべきことではありませんが、タイプが見つからないという多くのエラーを示してビルドできません。

しかし、私が本当に混乱したのは、どのタイプが存在しないかということです。

CancelEventArgsクラスはサポートされていますが、サポートされていCancelEventHandlerません。

これは単なる偶然ですか、それとも特定のタイプを含めないという意図的な決定によるものですか? 型の存在または不在の事実から、プラットフォーム設計に関する有用な情報を抽出できますか?

明確にさせてください:

プラットフォーム固有の概念が取り除かれるケースも理解できます。

しかし、PCL に関しては、私にはあまり明白ではありません。

私は自分が他の人より賢いとは思わないことに慣れてしまったので、明確な理由を探します。

共通型セットをできるだけ大きくすることは、プラットフォーム間の移行を容易にすることです。Eric Lippert が言うように、すべての機能は、価値と費用の比率の観点から正当化されなければなりません。したがって、私は大きな型セットの価値を過大評価するか、その移植性の実装の難しさを過小評価します。


コード分​​析を実行している特定のイベントに関しては、ジャンルのバージョンを使用するための適切な推奨事項がありましたEventHandler<TEventArgs>

別の同様の質問

4

2 に答える 2

1

これについては、このブログ投稿の「なぜ API が移植可能でないのか」セクションで少し取り上げます。

ポータブル クラス ライブラリに初めて取り組んだとき、.NET 4、Silverlight、および Windows Phone 7 は完成しているか、ほぼ完成していたため、より移植性の高い API をサポートするためにそれらに多くの変更を加えることができませんでした。.NET 4.5、.NET for Windows Store アプリ、および Windows Phone 8 により、PCL をサポートするためにさらに多くのことができるようになりました。.NET for Windows Store アプリのほとんどすべての .NET 型は、.NET 4.5 および .NET for Windows Store アプリを対象とする PCL で使用できます。Windows Phone 8 もこれらの API のほとんどをサポートしています。最大のギャップは、NuGet パッケージで埋めた HttpClient でした。

したがって、基本的に、より新しいプラットフォームを対象とする場合、より多くの型が移植可能になり、時間が経つにつれて改善され続けるはずです。

于 2013-07-22T20:32:54.847 に答える