AppDomain.CreateComInstanceFromとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > AppDomain.CreateComInstanceFromの意味・解説 

AppDomain.CreateComInstanceFrom メソッド (String, String)

指定した COM 型の新しいインスタンスを作成します。パラメータには、型を含んでいるアセンブリのファイルの名前および型の名前を指定します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function CreateComInstanceFrom ( _
    assemblyName As String, _
    typeName As String _
) As ObjectHandle
Dim instance As AppDomain
Dim assemblyName As String
Dim typeName As String
Dim returnValue As ObjectHandle

returnValue = instance.CreateComInstanceFrom(assemblyName, typeName)
public ObjectHandle CreateComInstanceFrom (
    string assemblyName,
    string typeName
)
public:
ObjectHandle^ CreateComInstanceFrom (
    String^ assemblyName, 
    String^ typeName
)
public ObjectHandle CreateComInstanceFrom (
    String assemblyName, 
    String typeName
)
public function CreateComInstanceFrom (
    assemblyName : String, 
    typeName : String
) : ObjectHandle

パラメータ

assemblyName

要求された型を定義するアセンブリが格納されているファイルの名前。

typeName

要求された型の名前。

戻り値
typeName で指定した新しいインスタンスのラッパーであるオブジェクト。実際のオブジェクトにアクセスするには、戻り値のラップを解除する必要があります。

例外例外
例外の種類条件

ArgumentNullException

assemblyName または typeName が null 参照 (Visual Basic では Nothing) です。

TypeLoadException

型を読み込むことができません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

MissingMethodException

パラメータなしのパブリック コンストラクタが見つかりませんでした。

FileNotFoundException

assemblyName が見つかりません。

MemberAccessException

typeName は抽象クラスです。

または

このメンバは、遅延バインディングの機構で呼び出されました。

NotSupportedException

MarshalByRefObject から継承されていないオブジェクトに対して、呼び出し元がアクティベーション属性を与えることはできません。

ArgumentException

assemblyName が空の文字列 ("") です。

BadImageFormatException

assemblyName が有効なアセンブリではありません。

FileLoadException

1 つのアセンブリまたはモジュールが 2 つの異なる証拠を使用して 2 回読み込まれました。

解説解説

このメソッドを使用すると、型をローカルに読み込まなくても、オブジェクトをリモートで作成できます。

実際のオブジェクトにアクセスするには、戻り値のラップを解除する必要があります。

このメソッドで COM 型のインスタンスを作成するには、値を true に設定した System.Runtime.InteropServices.ComVisibleAttribute 属性をその COM 型に明示的にまたは既定で適用する必要があります。それ以外の場合は TypeLoadException がスローされます。

使用例使用例

サンプルを次に示します。

Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

<ComVisible(True)> _
Class MyComVisibleType

   Public Sub New()
      Console.WriteLine("MyComVisibleType instantiated!")
   End Sub 'New

End Class 'MyComVisibleType

<ComVisible(False)> _
Class MyComNonVisibleType

   Public Sub New()
      Console.WriteLine("MyComNonVisibleType instantiated!")
   End Sub 'New

End Class 'MyComNonVisibleType

Module Test

   Sub Main()
      CreateComInstance("MyComNonVisibleType")   '
 Fail!
      CreateComInstance("MyComVisibleType")      '
 OK!
   End Sub 'Main

   Sub CreateComInstance(typeName As String)
      Try
         Dim currentDomain As AppDomain = AppDomain.CurrentDomain
         Dim assemblyName As String
 = currentDomain.FriendlyName
         currentDomain.CreateComInstanceFrom(assemblyName, typeName)
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'CreateComInstance

End Module 'Test
using System;
using System.Reflection;
using System.Runtime.InteropServices;

[ComVisible(true)]
class MyComVisibleType {
   public MyComVisibleType() {
      Console.WriteLine("MyComVisibleType instantiated!");
   }
}

[ComVisible(false)]
class MyComNonVisibleType {
   public MyComNonVisibleType() {
      Console.WriteLine("MyComNonVisibleType instantiated!");
   }
}

class Test {
   public static void Main()
 {
      CreateComInstance("MyComNonVisibleType");   // Fail!
      CreateComInstance("MyComVisibleType");      // OK!
   }
   
   static void CreateComInstance(string
 typeName) {
      try {
         AppDomain currentDomain = AppDomain.CurrentDomain;
         string assemblyName = currentDomain.FriendlyName;
         currentDomain.CreateComInstanceFrom(assemblyName, typeName);
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::InteropServices;

[ComVisible(true)]
public ref class MyComVisibleType
{
public:
   MyComVisibleType()
   {
      Console::WriteLine( "MyComVisibleType instantiated!" );
   }

};


[ComVisible(false)]
public ref class MyComNonVisibleType
{
public:
   MyComNonVisibleType()
   {
      Console::WriteLine( "MyComNonVisibleType instantiated!" );
   }

};

void CreateComInstance( String^ typeName )
{
   try
   {
      AppDomain^ currentDomain = AppDomain::CurrentDomain;
      String^ assemblyName = currentDomain->FriendlyName;
      currentDomain->CreateComInstanceFrom( assemblyName, typeName );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

int main()
{
   CreateComInstance( "MyComNonVisibleType" ); // Fail!
   CreateComInstance( "MyComVisibleType" ); // OK!
}

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.CreateComInstanceFrom メソッド (String, String, Byte[], AssemblyHashAlgorithm)

指定した COM 型の新しいインスタンスを作成します。パラメータには、型を含んでいるアセンブリのファイルの名前および型の名前を指定します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function CreateComInstanceFrom ( _
    assemblyFile As String, _
    typeName As String, _
    hashValue As Byte(), _
    hashAlgorithm As AssemblyHashAlgorithm _
) As ObjectHandle
Dim instance As AppDomain
Dim assemblyFile As String
Dim typeName As String
Dim hashValue As Byte()
Dim hashAlgorithm As AssemblyHashAlgorithm
Dim returnValue As ObjectHandle

returnValue = instance.CreateComInstanceFrom(assemblyFile, typeName, hashValue, hashAlgorithm)
public ObjectHandle CreateComInstanceFrom (
    string assemblyFile,
    string typeName,
    byte[] hashValue,
    AssemblyHashAlgorithm hashAlgorithm
)
public:
ObjectHandle^ CreateComInstanceFrom (
    String^ assemblyFile, 
    String^ typeName, 
    array<unsigned char>^ hashValue, 
    AssemblyHashAlgorithm hashAlgorithm
)
public ObjectHandle CreateComInstanceFrom (
    String assemblyFile, 
    String typeName, 
    byte[] hashValue, 
    AssemblyHashAlgorithm hashAlgorithm
)
public function CreateComInstanceFrom (
    assemblyFile : String, 
    typeName : String, 
    hashValue : byte[], 
    hashAlgorithm : AssemblyHashAlgorithm
) : ObjectHandle

パラメータ

assemblyFile

要求された型を定義するアセンブリが格納されているファイルの名前。

typeName

要求された型の名前。

hashValue

計算されたハッシュ コードの値を表します。

hashAlgorithm

アセンブリ マニフェストが使用するハッシュ アルゴリズムを表します。

戻り値
typeName で指定した新しいインスタンスのラッパーであるオブジェクト。実際のオブジェクトにアクセスするには、戻り値のラップを解除する必要があります。

例外例外
例外の種類条件

ArgumentNullException

assemblyName または typeName が null 参照 (Visual Basic では Nothing) です。

TypeLoadException

型を読み込むことができません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

MissingMethodException

パラメータなしのパブリック コンストラクタが見つかりませんでした。

FileNotFoundException

assemblyFile が見つかりません。

MemberAccessException

typeName は抽象クラスです。

または

このメンバは、遅延バインディングの機構で呼び出されました。

NotSupportedException

MarshalByRefObject から継承されていないオブジェクトに対して、呼び出し元がアクティベーション属性を与えることはできません。

ArgumentException

assemblyFile が空の文字列 ("") です。

BadImageFormatException

assemblyFile が有効なアセンブリではありません。

FileLoadException

1 つのアセンブリまたはモジュールが 2 つの異なる証拠を使用して 2 回読み込まれました。

解説解説

このメソッドを使用すると、型をローカルに読み込まなくても、オブジェクトをリモートで作成できます。

実際のオブジェクトにアクセスするには、戻り値のラップを解除する必要があります。

このメソッドで COM 型のインスタンスを作成するには、値を true に設定した System.Runtime.InteropServices.ComVisibleAttribute 属性をその COM 型に明示的にまたは既定で適用する必要があります。それ以外の場合は TypeLoadException がスローされます。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.CreateComInstanceFrom メソッド

指定した COM 型の新しいインスタンスを作成します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
AppDomain.CreateComInstanceFrom (String, String) 指定した COM 型の新しいインスタンスを作成します。パラメータには、型を含んでいるアセンブリのファイルの名前および型の名前を指定します。
AppDomain.CreateComInstanceFrom (String, String, Byte[], AssemblyHashAlgorithm) 指定した COM 型の新しいインスタンスを作成します。パラメータには、型を含んでいるアセンブリのファイルの名前および型の名前を指定します。
参照参照

関連項目

AppDomain クラス
AppDomain メンバ
System 名前空間
Activator.CreateComInstanceFrom



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「AppDomain.CreateComInstanceFrom」の関連用語

AppDomain.CreateComInstanceFromのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



AppDomain.CreateComInstanceFromのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS