AppDomain.CreateComInstanceFrom メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した COM 型の新しいインスタンスを作成します。
オーバーロード
CreateComInstanceFrom(String, String) |
指定した COM 型の新しいインスタンスを作成します。 パラメーターは、型を含むアセンブリを含むファイルの名前と型の名前を指定します。 |
CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm) |
指定した COM 型の新しいインスタンスを作成します。 パラメーターは、型を含むアセンブリを含むファイルの名前と型の名前を指定します。 |
CreateComInstanceFrom(String, String)
指定した COM 型の新しいインスタンスを作成します。 パラメーターは、型を含むアセンブリを含むファイルの名前と型の名前を指定します。
public:
System::Runtime::Remoting::ObjectHandle ^ CreateComInstanceFrom(System::String ^ assemblyName, System::String ^ typeName);
public System.Runtime.Remoting.ObjectHandle CreateComInstanceFrom (string assemblyName, string typeName);
member this.CreateComInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
Public Function CreateComInstanceFrom (assemblyName As String, typeName As String) As ObjectHandle
パラメーター
- assemblyName
- String
要求された型を定義するアセンブリを含むファイルの名前。
- typeName
- String
要求された型の名前。
戻り値
typeName
で指定された新しいインスタンスのラッパーであるオブジェクト。 実際のオブジェクトにアクセスするには、戻り値をラップ解除する必要があります。
例外
assemblyName
または typeName
が null
。
型を読み込めません。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
パラメーターなしのパブリック コンストラクターが見つかりませんでした。
assemblyName
が見つかりません。
呼び出し元は、MarshalByRefObjectから継承しないオブジェクトのアクティブ化属性を指定できません。
assemblyName
は空の文字列 ("") です。
assemblyName
は有効なアセンブリではありません。
アセンブリまたはモジュールが、2 つの異なる証拠と共に 2 回読み込まれました。
参照されている COM オブジェクトが null
。
例
次の例では、次の例を示します。
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!
}
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 CreateComInstanceFromSnippet {
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);
}
}
}
open System
open System.Runtime.InteropServices
[<ComVisible true>]
type MyComVisibleType() =
do
printfn "MyComVisibleType instantiated!"
[<ComVisible false>]
type MyComNonVisibleType() =
do
printfn "MyComNonVisibleType instantiated!"
let createComInstance typeName =
try
let currentDomain = AppDomain.CurrentDomain
let assemblyName = currentDomain.FriendlyName
currentDomain.CreateComInstanceFrom(assemblyName, typeName)
|> ignore
with e ->
printfn $"{e.Message}"
createComInstance "MyComNonVisibleType" // Fail!
createComInstance "MyComVisibleType" // OK!
Imports System.Reflection
Imports System.Runtime.InteropServices
<ComVisible(True)> _
Class MyComVisibleType
Public Sub New()
Console.WriteLine("MyComVisibleType instantiated!")
End Sub
End Class
<ComVisible(False)> _
Class MyComNonVisibleType
Public Sub New()
Console.WriteLine("MyComNonVisibleType instantiated!")
End Sub
End Class
Module Test
Sub Main()
CreateComInstance("MyComNonVisibleType") ' Fail!
CreateComInstance("MyComVisibleType") ' OK!
End Sub
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
End Module 'Test
注釈
このメソッドを使用すると、型をローカルに読み込む必要なく、リモートでオブジェクトを作成できます。
実際のオブジェクトにアクセスするには、戻り値をラップ解除する必要があります。
true
の値を持つ System.Runtime.InteropServices.ComVisibleAttribute 属性は、その型のインスタンスを作成するには、このメソッドの COM 型に明示的に、または既定で適用する必要があります。それ以外の場合は、TypeLoadException がスローされます。
こちらもご覧ください
適用対象
CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)
指定した COM 型の新しいインスタンスを作成します。 パラメーターは、型を含むアセンブリを含むファイルの名前と型の名前を指定します。
public:
System::Runtime::Remoting::ObjectHandle ^ CreateComInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Byte> ^ hashValue, System::Configuration::Assemblies::AssemblyHashAlgorithm hashAlgorithm);
public System.Runtime.Remoting.ObjectHandle CreateComInstanceFrom (string assemblyFile, string typeName, byte[] hashValue, System.Configuration.Assemblies.AssemblyHashAlgorithm hashAlgorithm);
member this.CreateComInstanceFrom : string * string * byte[] * System.Configuration.Assemblies.AssemblyHashAlgorithm -> System.Runtime.Remoting.ObjectHandle
Public Function CreateComInstanceFrom (assemblyFile As String, typeName As String, hashValue As Byte(), hashAlgorithm As AssemblyHashAlgorithm) As ObjectHandle
パラメーター
- assemblyFile
- String
要求された型を定義するアセンブリを含むファイルの名前。
- typeName
- String
要求された型の名前。
- hashValue
- Byte[]
計算されたハッシュ コードの値を表します。
- hashAlgorithm
- AssemblyHashAlgorithm
アセンブリ マニフェストで使用されるハッシュ アルゴリズムを表します。
戻り値
typeName
で指定された新しいインスタンスのラッパーであるオブジェクト。 実際のオブジェクトにアクセスするには、戻り値をラップ解除する必要があります。
例外
assemblyFile
または typeName
が null
。
型を読み込めません。
アンロードされたアプリケーション ドメインに対して操作が試行されます。
パラメーターなしのパブリック コンストラクターが見つかりませんでした。
assemblyFile
が見つかりません。
呼び出し元は、MarshalByRefObjectから継承しないオブジェクトのアクティブ化属性を指定できません。
assemblyFile
は空の文字列 ("") です。
assemblyFile
は有効なアセンブリではありません。
アセンブリまたはモジュールが、2 つの異なる証拠と共に 2 回読み込まれました。
参照されている COM オブジェクトが null
。
注釈
このメソッドを使用すると、型をローカルに読み込む必要なく、リモートでオブジェクトを作成できます。
実際のオブジェクトにアクセスするには、戻り値をラップ解除する必要があります。
true
の値を持つ System.Runtime.InteropServices.ComVisibleAttribute 属性は、その型のインスタンスを作成するには、このメソッドの COM 型に明示的に、または既定で適用する必要があります。それ以外の場合は、TypeLoadException がスローされます。
こちらもご覧ください
適用対象
.NET