C#4.0では、実行時にルックアップするキーワードdynamic
が導入されています。ダイナミックで厄介な反射はそれ以上ありませんか?
これはもはや厄介な反省を必要としないのでしょうか?もしそうなら、それの例を見せてもらえますか?
C#4.0では、実行時にルックアップするキーワードdynamic
が導入されています。ダイナミックで厄介な反射はそれ以上ありませんか?
これはもはや厄介な反省を必要としないのでしょうか?もしそうなら、それの例を見せてもらえますか?
私たちはまだReflectionを持っています - 通常のCLRオブジェクトに対して 'dynamic'を使用すると、Reflectionベースのディスパッチャが呼び出されます。
だから、私たちはまだリフレクションを持っていますが、やりやすくなります。ここで
は例です:
// Via 'dynamic'
dynamic dx = GetSomeCLRObject();
dx.DoSomething();
dx.SomeMember = 2;
// Via Reflection
object x = GetSomeCLRObject();
Type xt = x.GetType();
MemberInfo DoSomethingMethod = xt.GetMethod("DoSomething");
DoSomethingMethod.Invoke(x, null);
PropertyInfo SomeMemberProperty = xt.GetProperty("SomeMember");
SomeMemberProperty.SetValue(x, 2);
私はあなたのことは知らないが、私はかつてのが好きです。 =)
これらの両方のケースでは、コンパイル時のチェックもなく、IntellisenseもIDEサポートもありませんが、前者の方が後者よりはるかに表現力があります。
すごくうまいですが、私はダイナミックな言語機能について多くのことを聞いてきましたが、どのように動作するのか全く分かりませんでした。私はクラスライブラリのもののために頻繁にリフレクションを使用するので、これは素晴らしいです。私は実際に反射をカプセル化するオブジェクトのためのいくつかの拡張メソッドを書いた....それらは冗長になります:-( – andy
同じ構文がDLR上で動作するもの(PythonやJavascriptのようなもの、さらにはCOMオブジェクト)をターゲットにできることがわかった方が良いと思います。 =) –
ダイナミックディスパッチは、リフレクションの1つの使用のみです。構造体のクラスを調べ、その構造体に関する情報を取得し、何らかの形で視覚化したり、何らかの方法で動的にメンバーにアクセスしたりすることなく、それを実行する理由はたくさんあります。反射はここにあります。 :)
here is a video from PDCのthe man himselfについては、それと(その他のC#4.0関連の)動的キーワードの例が必要な場合。
偉大な話 - 特にC#5のもの - 私にうずまきがあります... –
ええ、REPLとC#はとても素晴らしかったです。 –
ダイナミックは、コンパイル時にその名前がわかっていて固定されている、名前だけで知られているメソッドの問題を解決するのに大いに役立ちますが、もちろんそのようなメソッドはタイプを制御するとインタフェースとして表現できます。
dynamic
は全く役に立たない場合もあります
dynamic
を参照最大の用途は以下のとおりです。
が
ジェネリックのシナリオについての良い点。私にとって少なくともジェネリックスは私の反省の大部分が起こる場所です。この場合、ダイナミクスは役に立ちません。 しかし、ジェネリックスはメソッドから返されるanonymos型の発行を解決しますか? – andy
* dynamic *は匿名型での作業を容易にしますが、正直言って答えは "名前付き型を作る"でしょう。 Re generics - *いくつかのジェネリックが動作するかもしれません(ベータの前に伝えるのは難しい) - しかし、私はジェネリックのすべてを動作させるとは仮定しません。主に、問題はジェネリックメソッド(ジェネリックタイプではなく、あなたが実体化された後に型が閉じられるのでOKです)です。 –
DLR interopをあなたの肯定的なユースケースリストに追加する必要があります。これは、今後のフレームワークにおいてますます重要になるだろうからです。 @エリック - 確かに; –
初めて5時以降、SOと無回答で質問します! – Vimvq1987