2016-10-26 17 views
3

私のクラスには、デフォルトのパラメータのないコンストラクタはありません。私はいくつかのAppDomainの内側に私のクラスのインスタンスを作成するために午前コンストラクタパラメータをAppDomain.CreateInstanceXXXに転送するにはどうすればよいですか?

public Section(string fileName) {...} 

:それは代わりに、このようなコンストラクタを持っています。私のクラスにデフォルトのコンストラクタがある場合は、次のようにします:

AppDomain domain = AppDomain.CreateDomain("ACAD-0001:409"); 

ISection section = (ISection)domain.CreateInstanceAndUnwrap(
    typeof(Section).Assembly.FullName, typeof(Section).FullName); 

デフォルトのコンストラクタはありません。私のコンストラクタのパラメータをどのように転送できますか?

私はそれがこのような何か仕事に期待:

string cuiFile = "..."; 
ISection section = (ISection)domain.CreateInstanceAndUnwrap(
    typeof(Section).Assembly.FullName, 
    typeof(Section).FullName, 
    new object[] { cuiFile }); 

をしかし、これは動作しません。

+1

[この過負荷](https://msdn.microsoft.com/en-us/library/dd414842(V = vs.110).aspxの) 。 2つのオブジェクト[]があることに注意してください - - 1は、あなたが望んでいたARGSであるが、他は – Amy

+0

https://msdn.microsoft.com/pl-pl/library/dd414842(v=vs.110).aspx 、 ありがとうございました!問題は解決された。 – quetzalcoatl

+0

@Amy属性れる –

答えて

4

は、あなたが使用する必要がthis overload:あなたが必要

public object CreateInstanceAndUnwrap(
    string assemblyName, 
    string typeName, 
    bool ignoreCase, 
    BindingFlags bindingAttr, 
    Binder binder, 
    object[] args,   // <-- args go here 
    CultureInfo culture, 
    object[] activationAttributes 
) 
関連する問題