2009-12-02 10 views

答えて

18

なし。 Assembly.CreateInstanceは実際にはボンネットの下でActivator.CreateInstanceを呼び出します。 Assembly.CreateInstanceに

使用リフレクター:Activator.CreateInstanceは、任意のタイプのオブジェクトを作成することができ、一方

public object CreateInstance(string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes) 
{ 
    Type type = this.GetType(typeName, false, ignoreCase); 
    if (type == null) 
    { 
     return null; 
    } 
    return Activator.CreateInstance(type, bindingAttr, binder, args, culture, activationAttributes); 
} 
16

Assembly.CreateInstanceは、特定のアセンブリ内の型を探し。

Activator.CreateInstanceには、Assemblyのオーバーロードがありません。たとえば、他のアプリドメインやRemotingを使って別のサーバーにオブジェクトを作成することができます。

+0

これらは良い点です – scottm

+0

ニース。みんなありがとう。 –

2

Typeオブジェクトの代わりに、タイプ名とアセンブリ名をActivator.CreateInstanceに指定できます。つまり、現在ロードされていない場合は、現在のAppDomainにアセンブリをロードし、その型をロードしようとします。 Assembly.CreateInstance(Activatorと呼ばれる)は、アセンブリがロードされていない場合、アセンブリをロードしようとしません。指定された型のTypeオブジェクトを取得しようとしますが、見つからない場合はnullを返します(テスト後ではなくコードを読むことでこれを宣言します)。

関連する問題