Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Method

定義

このアセンブリから型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成します。Locates a type from this assembly and creates an instance of it using the system activator.

オーバーロード

CreateInstance(String) CreateInstance(String) CreateInstance(String) CreateInstance(String)

大文字小文字を区別する検索を使用してこのアセンブリから指定された型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成します。Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean)

オプションの大文字小文字を区別する検索を使用してこのアセンブリから指定された型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成します。Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

オプションの大文字小文字を区別する検索を使用して、このアセンブリから指定された型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成し、指定されたカルチャ設定、引数、バインディング属性、およびアクティベーション属性を設定します。Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

CreateInstance(String) CreateInstance(String) CreateInstance(String) CreateInstance(String)

大文字小文字を区別する検索を使用してこのアセンブリから指定された型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成します。Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance (string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object

パラメーター

typeName
String String String String

検索対象の型の FullNameThe FullName of the type to locate.

戻り値

パラメーターのないコンストラクターが使用されて作成された指定した型のインスタンス。typeName が見つからない場合は、nullAn instance of the specified type created with the parameterless constructor; or null if typeName is not found. 型は、既定のバインダーを使用して解決されます。カルチャまたはアクティベーション属性は指定せず、BindingFlagsPublic または Instance に設定します。The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

実装

例外

typeName は空の文字列 ("") または null 文字で始まる文字列です。typeName is an empty string ("") or a string beginning with a null character.

- または --or- 現在のアセンブリは、リフレクションのみのコンテキストに読み込まれました。The current assembly was loaded into the reflection-only context.

一致するコンストラクターが見つかりませんでした。No matching constructor was found.

typeName には見つからなかった依存アセンブリが必要です。typeName requires a dependent assembly that could not be found.

typeName には、見つかったものの読み込めなかった依存アセンブリが必要です。typeName requires a dependent assembly that was found but could not be loaded.

- または --or- 現在のアセンブリはリフレクションのみのコンテキストに読み込まれましたが、typeName には事前に読み込まれていない依存アセンブリが必要です。The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName には依存アセンブリが必要ですが、ファイルは有効なアセンブリではありません。typeName requires a dependent assembly, but the file is not a valid assembly.

または-or- typeName には、現在読み込まれているバージョンより新しいバージョンのランタイム用にコンパイルされた依存アセンブリが必要です。typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

次の例ではPerson 、クラスを定義CreateInstance(String)し、メソッドを呼び出してインスタンス化します。The following example defines a Person class and calls the CreateInstance(String) method to instantiate it.

using System;
using System.Reflection;
using Contoso.Libraries;

namespace Contoso.Libraries
{
   public class Person
   {
      private string _name;
   
      public Person()
      { }
   
      public Person(string name)
      {
         this._name = name;
      }
   
      public string Name
      { get { return this._name; }
        set { this._name = value; } }
   
      public override string ToString()
      {
         return this._name;
      }
   }
}

public class Example
{
   public static void Main()
   {
      Assembly assem = typeof(Person).Assembly;
      Person p = (Person) assem.CreateInstance("Contoso.Libraries.Person");
      if (! (p == null)) {
         p.Name = "John";
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p);
      }
      else {
         Console.WriteLine("Unable to instantiate a Person object.");
      }   
   }
}
// The example displays the following output:
//        Instantiated a Person object whose value is 'John'
Imports System.Reflection
Imports Contoso.Libraries

Namespace Contoso.Libraries
   Public Class Person
      Private _name As String 
   
      Public Sub New()
      End Sub 
   
      Public Sub New(name As String)
         Me._name = name
      End Sub 
   
      Public Property Name As String 
         Get 
            Return Me._name
         End Get 
         Set 
            Me._name = value
         End Set 
      End Property 
   
      Public Overrides Function ToString() As String 
         Return Me._name
      End Function 
   End Class
End Namespace 

Module Example
   Public Sub Main()
      Dim assem As Assembly = GetType(Person).Assembly
      Dim p As Person = CType(assem.CreateInstance("Contoso.Libraries.Person"),
                              Person)
      If p IsNot Nothing Then
         p.Name = "John"
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p)
      Else
         Console.WriteLine("Unable to instantiate a Person object.")
      End If   
   End Sub
End Module
' The example displays the following output:
'       Instantiated a Person object whose value is 'John'

注釈

ランタイムがtypeName Assemblyインスタンス内で見つからない場合は、例外をスロー nullする代わりにを返します。If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. これは、次の場合に発生する可能性があります。This might happen because:

  • 型の完全修飾名が指定されていません。You haven't specified the fully qualified name of the type.

  • 完全修飾型名を指定しましたが、その大文字と小文字の区別がType.FullName型のプロパティの大文字と小文字の区別が一致していません。You've specified the fully qualified type name, but its case doesn't match the case of the type's Type.FullName property. 型の完全typeName名との大文字と小文字を区別しない比較を行うには、 ignoreCase CreateInstance(String, Boolean)オーバーロードを呼び出し、引数にを指定trueします。For a case-insensitive comparison of typeName with the type's full name, call the CreateInstance(String, Boolean) overload and specify true for the ignoreCase argument.

  • 型が現在Assemblyのインスタンスに存在しません。The type doesn't exist in the current Assembly instance.

セキュリティ

ReflectionPermission
などの機構をInvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])使用して遅延バインディングが呼び出された場合。when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). 関連付けられた列挙型:MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean)

オプションの大文字小文字を区別する検索を使用してこのアセンブリから指定された型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成します。Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object CreateInstance (string typeName, bool ignoreCase);
abstract member CreateInstance : string * bool -> obj
override this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object

パラメーター

typeName
String String String String

検索対象の型の FullNameThe FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

型名の大文字と小文字の違いを無視する場合は true。それ以外の場合は falsetrue to ignore the case of the type name; otherwise, false.

戻り値

パラメーターのないコンストラクターが使用されて作成された指定した型のインスタンス。typeName が見つからない場合は、nullAn instance of the specified type created with the parameterless constructor; or null if typeName is not found. 型は、既定のバインダーを使用して解決されます。カルチャまたはアクティベーション属性は指定せず、BindingFlagsPublic または Instance に設定します。The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

実装

例外

typeName は空の文字列 ("") または null 文字で始まる文字列です。typeName is an empty string ("") or a string beginning with a null character.

- または --or- 現在のアセンブリは、リフレクションのみのコンテキストに読み込まれました。The current assembly was loaded into the reflection-only context.

一致するコンストラクターが見つかりませんでした。No matching constructor was found.

typeName には見つからなかった依存アセンブリが必要です。typeName requires a dependent assembly that could not be found.

typeName には、見つかったものの読み込めなかった依存アセンブリが必要です。typeName requires a dependent assembly that was found but could not be loaded.

- または --or- 現在のアセンブリはリフレクションのみのコンテキストに読み込まれましたが、typeName には事前に読み込まれていない依存アセンブリが必要です。The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName には依存アセンブリが必要ですが、ファイルは有効なアセンブリではありません。typeName requires a dependent assembly, but the file is not a valid assembly.

または-or- typeName には、現在読み込まれているバージョンより新しいバージョンのランタイム用にコンパイルされた依存アセンブリが必要です。typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

次の例ではPerson 、クラスを定義します。The following example defines a Person class. 次に、 CreateInstance(String)メソッドを呼び出してインスタンス化しますが、 typeName引数の大文字と小文字の区別がFullName型のプロパティの値nullと一致しないため、メソッドはを返します。It then calls the CreateInstance(String) method to instantiate it, but because the casing of the typeName argument doesn't match that of the type's FullName property, the method returns null. この例で同じ文字列をCreateInstance(String, Boolean)オーバーロードに渡し、比較で大文字と小文字Personを区別しないように指定すると、クラスPersonが検出され、オブジェクトが正常にインスタンス化されます。When the example passes the same string to the CreateInstance(String, Boolean) overload and specifies that the comparison should be case-insensitive, the Person class is found, and a Person object is successfully instantiated.

using System;
using System.Reflection;
using Contoso.Libraries;

namespace Contoso.Libraries
{
   public class Person
   {
      private string _name;
   
      public Person()
      { }
   
      public Person(string name)
      {
         this._name = name;
      }
   
      public string Name
      { get { return this._name; }
        set { this._name = value; } }
   
      public override string ToString()
      {
         return this._name;
      }
   }
}

public class Example
{
   public static void Main()
   {
      String fullName = "contoso.libraries.person";
      Assembly assem = typeof(Person).Assembly;
      Person p = (Person) assem.CreateInstance(fullName);
      if (! (p == null)) {
         p.Name = "John";
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p);
      }
      else {
         Console.WriteLine("Unable to instantiate a Person object " +
                           "with Assembly.CreateInstance(String)");
         // Try case-insensitive type name comparison.
         p = (Person) assem.CreateInstance(fullName, true);
         if (! (p == null)) {
            p.Name = "John";
            Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                              p.GetType().Name, p);
         }
         else {
            Console.WriteLine("Unable to instantiate a {0} object.", 
                              fullName);
         }   
      }   
   }
}
// The example displays the following output:
//    Unable to instantiate a Person object with Assembly.CreateInstance(String)
//    Instantiated a Person object whose value is 'John'
Imports System.Reflection
Imports Contoso.Libraries

Namespace Contoso.Libraries
   Public Class Person
      Private _name As String 
   
      Public Sub New()
      End Sub 
   
      Public Sub New(name As String)
         Me._name = name
      End Sub 
   
      Public Property Name As String 
         Get 
            Return Me._name
         End Get 
         Set 
            Me._name = value
         End Set 
      End Property 
   
      Public Overrides Function ToString() As String 
         Return Me._name
      End Function 
   End Class
End Namespace 

Module Example
   Public Sub Main()
      Dim fullName As String = "contoso.libraries.person"
      Dim assem As Assembly = GetType(Person).Assembly
      Dim p As Person = CType(assem.CreateInstance(fullName),
                              Person)
      If p IsNot Nothing Then
         p.Name = "John"
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p)
      Else
         Console.WriteLine("Unable to instantiate a Person object" +
                           "with Assembly.CreateInstance(String)")
         ' Try case-insensitive type name comparison.
         p = CType(assem.CreateInstance(fullName, true), Person)
         If p IsNot Nothing Then 
            p.Name = "John"
            Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                              p.GetType().Name, p)
         Else 
            Console.WriteLine("Unable to instantiate a {0} object.", 
                              fullName)
         End If   
      End If   
   End Sub
End Module
' The example displays the following output:
'    Unable to instantiate a Person object with Assembly.CreateInstance(String)
'    Instantiated a Person object whose value is 'John'

注釈

ランタイムがtypeName Assemblyインスタンス内で見つからない場合は、例外をスロー nullする代わりにを返します。If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. これは、次の場合に発生する可能性があります。This might happen because:

  • 型の完全修飾名が指定されていません。You haven't specified the fully qualified name of the type.

  • 型が現在Assemblyのインスタンスに存在しません。The type doesn't exist in the current Assembly instance.

セキュリティ

ReflectionPermission
などの機構をInvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])使用して遅延バインディングが呼び出された場合。when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). 関連付けられた列挙型:MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

オプションの大文字小文字を区別する検索を使用して、このアセンブリから指定された型を検索し、システム アクティベーターを使用してこの型のインスタンスを作成し、指定されたカルチャ設定、引数、バインディング属性、およびアクティベーション属性を設定します。Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
public object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
abstract member CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
override this.CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj

パラメーター

typeName
String String String String

検索対象の型の FullNameThe FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

型名の大文字と小文字の違いを無視する場合は true。それ以外の場合は falsetrue to ignore the case of the type name; otherwise, false.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

検索の実行方法に影響を与えるビットマスク。A bitmask that affects the way in which the search is conducted. 値は、BindingFlags のビット フラグの組み合わせです。The value is a combination of bit flags from BindingFlags.

binder
Binder Binder Binder Binder

バインディング、引数型の強制変換、メンバーの呼び出し、および、リフレクションによる MemberInfo オブジェクトの取得を有効にするオブジェクト。An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. bindernull の場合は、既定のバインダーが使用されます。If binder is null, the default binder is used.

args
Object[]

コンストラクターに渡す引数を格納する配列。An array that contains the arguments to be passed to the constructor. この引数の配列は、呼び出すコンストラクターのパラメーターと、数、順序、および型が同じでなければなりません。This array of arguments must match in number, order, and type the parameters of the constructor to be invoked. パラメーターなしのコンストラクターを使用する場合は、args を空の配列または null にする必要があります。If the parameterless constructor is desired, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

型の強制変換を制御するために使用する CultureInfo のインスタンス。An instance of CultureInfo used to govern the coercion of types. nullの場合は、現在のスレッドの CultureInfo が使用されます。If this is null, the CultureInfo for the current thread is used. (これは、たとえば、1000 を表す StringDouble 値に変換する場合に必要です。これは、カルチャによって 1000 の表記が異なるためです。)(This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.)

activationAttributes
Object[]

アクティべーションに参加できる 1 つ以上の属性の配列。An array of one or more attributes that can participate in activation. 通常、リモート オブジェクトをアクティブ化するために必要な URL を指定する 1 つの UrlAttribute オブジェクトを含む配列。Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object. このパラメーターは、クライアント側でアクティブ化されるオブジェクトに関連しています。This parameter is related to client-activated objects. クライアント アクティベーションは、下位互換性のために残されているレガシ テクノロジです。新規の開発には使用しないでください。Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. 分散アプリケーションは、代わりに Windows Communication Foundation (WCF) を使用する必要があります。Distributed applications should instead use Windows Communication Foundation.

戻り値

指定した型のインスタンス。typeName が見つからない場合は、nullAn instance of the specified type, or null if typeName is not found. 指定された引数は、型を解決するため、およびインスタンスの作成に使用されるコンストラクターをバインドするために使用されます。The supplied arguments are used to resolve the type, and to bind the constructor that is used to create the instance.

実装

例外

typeName は空の文字列 ("") または null 文字で始まる文字列です。typeName is an empty string ("") or a string beginning with a null character.

または-or- 現在のアセンブリは、リフレクションのみのコンテキストに読み込まれました。The current assembly was loaded into the reflection-only context.

一致するコンストラクターが見つかりませんでした。No matching constructor was found.

空でないアクティベーション属性の配列は、 MarshalByRefObjectから継承されていない型に渡されます。A non-empty activation attributes array is passed to a type that does not inherit from MarshalByRefObject.

typeName には見つからなかった依存アセンブリが必要です。typeName requires a dependent assembly that could not be found.

typeName には、見つかったものの読み込めなかった依存アセンブリが必要です。typeName requires a dependent assembly that was found but could not be loaded.

または-or- 現在のアセンブリはリフレクションのみのコンテキストに読み込まれましたが、typeName には事前に読み込まれていない依存アセンブリが必要です。The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName には依存アセンブリが必要ですが、ファイルは有効なアセンブリではありません。typeName requires a dependent assembly, but the file is not a valid assembly.

- または --or- typeName には、現在読み込まれているバージョンより新しいバージョンのランタイム用にコンパイルされた依存アセンブリが必要です。typeName requires a dependent assembly which that was compiled for a version of the runtime that is later than the currently loaded version.

セキュリティ

ReflectionPermission
などの機構をInvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])使用して遅延バインディングが呼び出された場合。when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). 関連付けられた列挙型:MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
デリゲートのインスタンスを作成するにはto create an instance of a delegate. 関連付けられた列挙型:UnmanagedCodeAssociated enumeration: UnmanagedCode

適用対象