とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

dynamic ですって?

ネタ元↓

Charlie Calvert's Community Blog: Future Focus I: Dynamic Lookup

Srivatsn's Blog : Dynamic dispatch in C#

ゆくゆく(4.0?)はC# に、dynamic ってのができるのかもっていうお話。目的は・・・遅延バインディング?

Dynamic dispatch in C#に書かれているのをさくっと引用

Type myType = Type.GetTypeFromProgID("IMyLib.MyClass");
object obj = Activator.CreateInstance(myType);
object[] args = new object[2];
args[0] = "Hello";
args[1] = 3;
myType.InvokeMember("MyMethod", BindingFlags.InvokeMethod, null, args);
Type myType = Type.GetTypeFromProgID("IMyLib.MyClass");
dynamic
{
    object obj = Activator.CreateInstance(myType);
    obj.MyMethod("Hello", 3);
}

上のように書いていたものが下のように書ける・・・ようになるかも。dynamic ってブロックなのか。で、dynamic ブロックの中でobjがobject型なのにMyMethodを呼び出せると・・・。

ほほ~ん。dynamic ってブロックなのでVisual Basic のOption Strict Off より範囲はせまい?





(よく考えたらOption Strict OffだってPartial Class やPartial Methodでだいぶせまくできるんじゃ・・・。ブロックとまではいかないまでも。)

投稿日時 : 2008年2月6日 14:51

Feedback

# re: dynamic ですって? 2008/02/06 14:58 シャノン

dynamicブロックの中に限ってコンパイル時の型チェックをせずに遅延バインディングするってことなのかしら。

VB.NET 9.0に取り入れられなかった動的インターフェイスがどうして死んだのかが気になる。

# re: dynamic ですって? 2008/02/06 16:18 渋木宏明(ひどり)

簡単に言うと遅延バインディングです>DynamicLookup

ただ、これまで言語処理系や DLR がとかがばらばらに実装していたそれらの仕組みを、DLR の実装を元に一本化して、.NET なプログラミング言語に対して共通基盤として公開する、てなことです。(はず)

# re: dynamic ですって? 2008/02/06 22:47 かるあ

VB9 の動的インターフェイスは本当に欲しい機能でしたね。
あれだったらC#でもそれほど違和感なく仕えたと思うんだけれどなー

# re: dynamic ですって? 2008/02/07 1:01 kkamegawa

TypeでとってーInvokeしてーって面倒なことこの上なかったので、こう書けるようになると楽になっていいなー。

#いやもうそれなんていじめ?って思っていたので。

# re: dynamic ですって? 2008/02/07 10:59 επιστημη

せんせえしつもん。

obj.MyMethod("Hello", 3);
ってやったとき、シグニチャにマッチするメソッドが
見当たらなかったら何が起こるですか?

# re: dynamic ですって? 2008/02/07 14:57 とりこびと

コメントありがとうございます。

>>シャノンさん

>dynamicブロックの中に限ってコンパイル時の型チェックをせずに遅延バインディングするってことなのかしら。

っぽいですね。
なんか遅延バインディングの対象じゃないのとか紛れ込みそうなんですけど・・・。

>VB.NET 9.0に取り入れられなかった動的インターフェイスがどうして死んだのかが気になる。

わたしもです。ちょっと楽しみだったのに・・・。


>>渋木宏明(ひどり) さん

>簡単に言うと遅延バインディングです>DynamicLookup

なるほど。

>DLR の実装を元に一本化

「みんな勝手にやりすぎww」って感じですかw


>>かるあさん

>VB9 の動的インターフェイスは本当に欲しい機能でしたね。

です!
あれがあるとあんなことやこんなことが・・・(具体例は挙げられません。)


>>kkamegawa さん

>TypeでとってーInvokeしてーって面倒なことこの上なかったので、こう書けるようになると楽になっていいなー。

単純にシンタックスシュガーなものだけでもほしいですよね。

>#いやもうそれなんていじめ?って思っていたので。

そこはもう、Visual Basicでw


>>επιστημη さん

>シグニチャにマッチするメソッドが
>見当たらなかったら何が起こるですか?

At runtime the DLR will look at the actual object referenced by myDynamciObject for members with those names.
It will access them if they do indeed exist, otherwise an exception is thrown.

ってことかしらん?

タイトル
名前
Url
コメント