Silverlight用のダックタイピングライブラリはありますか?本格的な.NETFrameworkにはいくつかありますが、もっと軽いものを探しています。
5 に答える
Silverlight で Python のような DLR ベースの言語を使用することを検討してください。
「Silverlight ダック タイピング」とは、厳密に型指定されたインターフェイスの自動実装を指しているのでしょうか。それとも、オブジェクト インスタンスを使用したオブジェクト メタデータの動的作成ですか?
後者の場合、アンソニーの推奨事項は的を射ています。CLR (C# および VB.NET) で実行される厳密に型指定された言語は、真の動的ダック タイピングをサポートできません。したがって、Silverlight DLR プロジェクトの一部として出荷される IronRuby または IronPython を使用できます。
前者を探している場合は、基本的にモック ライブラリを探しています。Silverlight は、無数のオープン ソースのモック フレームワークをサポートしています。
Moq - http://code.google.com/p/moq/ (ダウンロード: http://moq.googlecode.com/files/Moq.Silverlight.4.0.812.4-bin.zip )
RhinoMocks - http://ayende.com/projects/rhino-mocks.aspx (ダウンロード: http://ayende.com/20/section.aspx/download/230 )
AutoFac - http://code.google.com/p/autofac/ (ダウンロード: http://autofac.googlecode.com/files/Autofac-1.4.4.572-SL3.zip )
TypeMock / SilverUnit - http://cthru.codeplex.com (ダウンロード: http://cthru.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27748#DownloadId=69201 )
ダックタイピングの解釈にもよりますが、これが C# 4.0 にdynamic
搭載され、Silverlight で利用可能になったときに期待しています。dynamic
次に、ダック型 ( ) と静的型 (その他すべて)のビットを選択できます。すべて C# 内です。
dynamic duck = /* pretty much anything */
duck.Quack();
最近、 「DynamicWrapper」と呼ぶユーティリティを作成しました。Reflection.Emit を使用して、インターフェイスを実装するラッパー クラスをオンザフライで生成します。これは、C# でダック タイピングを実現する方法です。
残念ながら、Silverlight では機能しません。.Net 3.5 では非常にうまく機能し、SL 環境ではテストに合格しましたが、SL ランタイムではセキュリティ例外が発生します。
私はそれを理解する時間がありませんでしたが、コードは非常に単純です。たぶん、このコードはあなたを正しい方向に向けることができますか?
ImpromptuInterfaceは Silverlight 4 をサポートしています。ダック タイピングの静的実装だけでなく、動的実装も可能です。