DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

C#でCreateObjectと同じことをするには?

C#でVB.NETのInteraction.CreateObjectメソッドCreateObject関数)と同じことをするには、Type.GetTypeFromProgIdメソッドで型を取得し、Activator.CreateInstanceメソッドなどによりインスタンスを作成します。

なおこのように作成したCOMオブジェクトは、必要がなくなった時にMarshal.FinalReleaseComObjectメソッドMarshal.ReleaseComObjectメソッドで解放します。

次にVB.NETのInteraction.CreateObjectメソッドとほぼ同様の機能を有するメソッドのコードを示します。

C#
コードを隠すコードを選択
/// <summary>
/// COMオブジェクトへの参照を作成および取得する
/// </summary>
/// <param name="progId">作成するオブジェクトのプログラムID</param>
/// <param name="serverName">
/// オブジェクトが作成されるネットワーク サーバーの名前
/// </param>
/// <returns>作成されたCOMオブジェクト</returns>
public static object CreateObject(string progId, string serverName)
{
    Type t;
    if (serverName == null || serverName.Length == 0)
        t = Type.GetTypeFromProgID(progId);
    else
        t = Type.GetTypeFromProgID(progId, serverName, true);
    return Activator.CreateInstance(t);
}

/// <summary>
/// COMオブジェクトへの参照を作成および取得する
/// </summary>
/// <param name="progId">作成するオブジェクトのプログラムID</param>
/// <returns>作成されたCOMオブジェクト</returns>
public static object CreateObject(string progId)
{
    return CreateObject(progId, null);
}

このようにして取得したCOMオブジェクトのプロパティやメソッドを呼び出すには、リフレクション(Type.InvokeMemberメソッドなど)を使用する必要があります。詳しくは、「型のメンバを動的に呼び出す」をご覧ください。

  • 履歴:
  • 2014/5/29 Marshal.FinalReleaseComObjectメソッドの説明を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。