2011-01-05 4 views
2

は、どのように私が何をしたいのか Silverlight 3/WP7でDynamicObjectと似たようなものを使用するには?

は自動実装..ですSILVERLIGHT 3(!)とWP7(なしC#4.0!)でSystem.Dynamic.DynamicObjectを模倣する動的言語ランタイム(DLR)、または何か他のものを使用することができますデータバインディングのために動的に作成されるプロパティ。

+0

これは既にわかっていない場合に備えて、データバインディングに言及しました.DynamicObject(またはその他のIDynamicMetaObjectProvider)を使用するSilverlight 4でも、データバインディングをSilverlightの動的オブジェクトにバインドすることはできません。これまでWPF 4だけがその能力を持っていました。 –

答えて

0

DLR.Net 4.0C# 4.0は、WP7でご利用いただけません。それはあなたがそれをすることができないことを意味します。少なくとも簡単にはありません。

Silverlightでは、カスタムマークアップ拡張子(things between {})を使用できません。だから、それもオプションではありません。

バインディングのためにカスタムBehaviorsを作成し、多くのプロパティと値を保持できるDictionariesで動作させることができます。

+1

これは問題です..私は行動の解決策を知っています..しかし、私はそれがあまり好きではありません。DynamicObjectも含まれているDynamic Language Runtime(dlr.codeplex.com)はどうですか? SL3で作業しますか? – Max

2

DLRはWP7で使用できます。
Iron RubyはWindows Phone 7をversion 1.1からサポートしています。

DynamicObjectを使用すると、C#の言語以外の言語を使用して満足している場合、このオプションかもしれない前に.NET 4.0

に拡張機能として利用可能でした。
Windows Phone 7でIronRubyを使用する方法については、http://msdn.microsoft.com/en-us/magazine/ff960707.aspxという記事があります。

代わりに、動的ではなく匿名タイプを使用できますか?私は、潜在的に束縛しているオプションが無限に存在しないと仮定します。匿名型を使用したい場合は

あなたは

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Windows")] 

がバインディングを解決するためのフレームワークを有効にするために設定する必要があります。

おそらく、あなたは外部システムから動的オブジェクトを取得しています。アプリと外部システムの間にラッパーレイヤーを追加して、オブジェクトを動的オブジェクトではなくPOCOにすることはできませんか?

+0

なぜDynamicObjectはRubyで利用できますが、DLRではC#では使用できません。 – Max

+1

@knom IronRubyプロジェクトには 'DynamicObject'を含む' Microsoft.Scripting.Core'のコピーが含まれています。 –

関連する問題