.NET FrameworkにはSystem.Reflectionという名前空間があります。
動的に型を作成、呼び出しが出来るというなんともスバラシイ、オブジェクト指向プログラミング新時代の到来って気分。
…ちょっと誉めすぎですが、これがライブラリとして提供されているというところが高ポイントだと思います。
例えば、従来のDLLなどの関数を呼び出す場合、
呼び出し元が引数の数や、戻り値などをコンパイラに明示しておかなくてはならなかったハズ。たぶん。
typedef DWORD (WINAPI *LPMP3INFP_GETVER)();
m_lpmp3infp_GetVer = reinterpret_cast<lpmp3infp_getver>(GetProcAddress(m_lpmp3infp, “mp3infp_GetVer”));
m_lpmp3infp_GetVer();
ところがどっこい(?)、System.Reflectionを使うと実行時にそのDLLに定義されているクラスとか、関数をその場で調べ、またインスタンス作成までできます。
より、柔軟な動的リンクが可能なわけですね。
で。ここから個人的メモ。
Assembly : アセンブリ。DLLやEXEのようなファイル単体?
Module : モジュール。DLLやEXE内に複数含むことが出来る。VBとの互換性の為にあるのかな?Managed C++とかの場合は恐らく、インスタンス化できないstaticなクラスがこれにあたるのかも?
…さっぱり、わかんねw
こりゃぁ、ちゃんとテクノロジガイド参考書でも買ってくるべきだな…