2

私は、C# と組み合わせて WPF および Silverlight アプリで Model-View-ViewModel (MVVM) パターンを非常に喜んで使用しています。宣言型の XAML マークアップとデータ バインディングは非常に貴重です。私はそれらなしでは生きられません。しかし、 Harry Pierson による動的言語に関するこの講演は、動的言語を学ぶことに興奮したので、新しいプロジェクトで動的言語を試してみたいと思います。私はIronPython In Actionを読んで楽しんでおり、いくつかの WPF の例が含まれていますが、命令型のコードのみです。

MVVM アプリの ViewModel レイヤーと Model レイヤーで IronPython または IronRuby を使用することについてどう思いますか (C# と比較して)? それらを魅力的にする (または魅力的でない) 特徴はどれですか? 基本的な利点/制限 (例: AOP、ダック タイピング、モンキー パッチ、静的型の制限など) と実用的なもの (例: パフォーマンス、v2 用の現在の IronPython Studio がないなど) に関心があります。C# 4.0 で改善される制限はありますか?

ありがとう、

デビッド

4

3 に答える 3

3

Shay の言う通りですが、Silverlight のみで、Silverlight と IronRuby は使用したことがありません。純粋な IronRuby と WPF でコマンドをバインドして使用できます。どちらもICustomTypeDescriptorを使用しているため、これは IronPython にも当てはまると思います 。注意点があります。イベントには、IronRuby 0.9 よりも新しい DLR ビルドが必要です。

IronRuby コマンドを作成するには、イベントを実装する必要があります。CLR イベントを含む IronRuby での実装とインターフェースについては、この SO の質問を参照してください。

バインディングに参加できる IronRuby オブジェクトの作成に関しては、DLR がそれをプロパティとして認識できるようにするには、attr リーダー/ライターを使用する必要があります。

class Bindable
  attr :some_property, true
end

私はそれについていくつかの要点を持っています。コマンドの例バインディングを使用した単純な ViewModel の例、および例で使用されているXML ビルダー ベースの xaml ライブラリ。これらは私のために働いた。

制限があります。XamlLoader は、CLR から IronRuby クラスを認識できません。これは、ビューが本当に馬鹿げている (コード ビハインドがない) か、C# dll から来ていることを意味します。また、C# を使用しないと、コード ビハインドを持つカスタム コントロールまたはユーザー コントロールを作成できないことも意味します。

私は IronRuby/WPF で完全に焼き付けられた MVVM アプリを持っていませんが、すべての要素が揃っていると思います。

于 2009-09-22T12:37:14.550 に答える
2

IronRuby を使用して WPF を作成することは非常に優れていると言えます。環境のメタプログラミングに少し時間を費やすと、すばらしいものになる可能性があります。

ただし、欠点があります。IronRuby オブジェクトではデータ バインディングが機能しません (そのためには CLR オブジェクトを使用する必要があります。回避策については私のブログ投稿を参照してください)。ただし、これは .Net 4 では改善されるはずです。

IronRuby は 11 月にのみ RTM になる予定であることに注意してください。

以上のことを踏まえて、ぜひチェックすることをお勧めします。あなたは私のようにそれに落ちるかもしれません:)

シェイ。

于 2009-09-22T09:37:31.293 に答える
2

IronPython と MVVM を WPF で試した経験についてブログに書いています。行くのは意外と簡単でした。

于 2010-10-06T16:35:34.520 に答える