2004年05月30日
川俣晶の縁側ソフトウェア技術雑記total 5876 count

実行時に動的にアセンブリを読み込んで、内部のメソッドを呼び出す

Written By: 川俣 晶連絡先

 .NET Framework環境下で、Reflectionを使えば、動的にアセンブリを読み込んで、その内部のメソッドを呼び出すことが可能であることは知っていました。

 しかし、何となく面倒そうという先入観があったのと、チャレンジする暇がないという理由で、やや敬遠していました。

 ですが、いざ試しに書いてみると、あっさり動いてしまいました。引数リストがオブジェクトの配列になることと、戻り値が常にobject型になっている点を除けば、何ら面倒なところはありませんね。(いや、実用上はそこが面倒という話はありますが……。それこそが、最も敬遠したい理由というのは嘘ではないでしょう)

 以下は、実験したスパイクのソースです。Visual Studio.NET 2003 (C#)用。

呼び出し側(コンソールアプリケーション) §

using System;

using System.Reflection;

namespace reflection001

{

    class Class1

    {

        [STAThread]

        static void Main(string[] args)

        {

            Assembly asm = Assembly.LoadFrom(@"..\..\..\reflectionTarget001\bin\debug\reflectionTarget001.dll");

            Type type = asm.GetType("ReflectionTarget001.Target");

            object result = type.InvokeMember("Sample", BindingFlags.InvokeMethod|BindingFlags.Public|BindingFlags.Static,

                null,null,new string[1] { "hello!" } );

            Console.WriteLine(result);

        }

    }

}

呼ばれる側(クラスライブラリ) §

using System;

namespace ReflectionTarget001

{

    public class Target

    {

        public static string Sample( string s )

        {

            return "[" + s + "]";

        }

    }

}

実行結果 §

[hello!]

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2004年
06月
03日
少し深入りすると仕事が止まる? 悩ましきXSLT!
3days 0 count
total 7997 count
【技術雑記】の前のコンテンツ
2004年
05月
20日
VB.NETの=演算子のオーバーヘッド・C#の=演算子より遅い?
3days 0 count
total 5022 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20040530223210
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.