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

DOBON.NET

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

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

次にVB.NETの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);
}

ただし、C#ではVB.NETと違い、暗黙の遅延バインディングができませんので、取得したCOMオブジェクトのプロパティやメソッドを呼び出すには、Type.InvokeMemberメソッドを使用する必要があります。詳しくは、こちらをご覧ください。