[英]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.