次の方法で共有


AppDomain.CreateComInstanceFrom メソッド

オーバーロードの一覧

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

[Visual Basic] Overloads Public Function CreateComInstanceFrom(String, String) As ObjectHandle

[C#] public ObjectHandle CreateComInstanceFrom(string, string);

[C++] public: ObjectHandle* CreateComInstanceFrom(String*, String*);

[JScript] public function CreateComInstanceFrom(String, String) : ObjectHandle;

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

[Visual Basic] Overloads Public Function CreateComInstanceFrom(String, String, Byte(), AssemblyHashAlgorithm) As ObjectHandle

[C#] public ObjectHandle CreateComInstanceFrom(string, string, byte[], AssemblyHashAlgorithm);

[C++] public: ObjectHandle* CreateComInstanceFrom(String*, String*, unsigned char __gc[], AssemblyHashAlgorithm);

[JScript] public function CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm) : ObjectHandle;

使用例

[Visual Basic, C#, C++] サンプルを次に示します。

[Visual Basic, C#, C++] メモ   ここでは、CreateComInstanceFrom のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
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

[C#] 
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);
      }
   }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::InteropServices;

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

[ComVisible(false)]
public __gc class MyComNonVisibleType {
public:
   MyComNonVisibleType() {
      Console::WriteLine(S"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(S"MyComNonVisibleType");   // Fail!
   CreateComInstance(S"MyComVisibleType");      // OK!
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

AppDomain クラス | AppDomain メンバ | System 名前空間