インターフェイス「IFile」に準拠するクラス「FileAutoSys」を含む「FileParser」というアセンブリがあります。
namespace FileParser
{
class FileAutoSys : IFile
{
public FileAutoSys(ref string[] args)
{
...
}
public FileAutoSys(){}
public void SetValues(ref string[] args)
{
*[same code as in the non-default constructor]*
}
}
Activator.CreateInstanceを使用してFileAutoSysのインスタンスを作成しようとしていますが、コンストラクターに引数を渡す際に問題が発生します。
2段階の手順を使用して、インスタンスを作成し、その状態を設定できます。
IFile file = (IFile)Activator.CreateInstance(Type.GetType("FileParser.File" + args[0]));
file.SetValues(ref args);
ここで、args[0]は文字列「AutoSys」です。
しかし、私はそれをすべて1つのステップで行う方法がわかりません。私はグーグルで検索しましたが、それがどのように行われたかについての明確な例を見つけることができません。MSDNは、オーバーロードを使用することを提案しています。
Activator.CreateInstance(Type, Object[])
しかし、役に立たないことに、それは例を示しておらず、C#の知識が不足しているために混乱を招きます。
私の例の文脈で上記の過負荷をどのように使用すべきかを誰かが私に説明してくれることを望んでいました。私は自分が何をすべきかを理解したいので、誰かにそれをしてくれるように頼んでいるのではありません。