[英]Pass arguments as well as string into Activator.CreateInstance
我有一个名为“ FileParser”的程序集,其中包含符合接口“ IFile”的类“ FileAutoSys”。
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的实例,但是在将args传递到其构造函数时遇到问题。
我可以创建一个实例并使用两步过程设置其状态:
IFile file = (IFile)Activator.CreateInstance(Type.GetType("FileParser.File" + args[0]));
file.SetValues(ref args);
其中args [0]是字符串'AutoSys'。
但是我不知道如何一步一步完成。 我已经在Google上搜索过,但找不到任何清楚的示例说明了它是如何完成的。 MSDN建议我使用重载:
Activator.CreateInstance(Type, Object[])
但是,无助地,它没有给出任何示例,而且由于我缺乏C#知识,因此令人困惑。
我希望有人可以向我解释在示例中如何使用上述重载。 我并不是要有人为我做这件事,因为我想了解我应该做什么。
只需将它们作为第二个参数传递即可。
IFile file = (IFile)Activator.CreateInstance(
Type.GetType("FileParser.File" + args[0]), new object[] { args });
编辑:将第二个参数包装在数组中,因为这是预期的参数类型,以及Activator.CreateInstance
上的参数类型,我认为这就是为什么令人困惑的原因。
尝试这个:
class CreateMe {
public CreateMe(ref string[] args) {
}
}
class Program {
static void Main(string[] args) {
var createMe = Activator.CreateInstance(typeof(CreateMe), new object[] { args });
}
}
IFile file = (IFile)Activator.CreateInstance(Type.GetType("FileParser.File" + args[0]), new object[]{args});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.