我正在使用使用Silverlight的Windows Phone 7应用程序。我想要做的是创建一个类的新实例给定一个字符串,其中包含我想要创建的正确类的名称。下面是我所指的代码片段,我正在尝试使用它来创建新实例。我从调试中知道serviceClass包含正确的字符串,如果我添加“.cs”,它现在会直接对应我所拥有的类之一,为什么不创建它呢?
WebViewService foundService; //From above
....
....
services.TryGetValue(mode, out foundService); //Find service
if (foundService == null)
{
string serviceClass;
serviceRegistry.TryGetValue(mode, out serviceClass); //Find serviceClass
if (serviceClass != null) //create new web service if one is found
{
try
{
//TODO: This is not working properly, should create an instance of some child class of WebViewService
foundService = (WebViewService)System.Activator.CreateInstance(Type.GetType(serviceClass+".cs"));
services.Add(mode, foundService);
}
catch
{
//But instead it always ends up here with ArgumentNullExeption
}
}
}
return foundService;
}
任何帮助或任何建议将不胜感激。谢谢你的时间!
答案 0 :(得分:2)
尝试使用类的全名(包含名称空间),不使用“.cs”部分。例如:YourApp.Services.YourWebViewService
答案 1 :(得分:2)
如果您的字符串包含fully qualified type name,那么您可以创建实例。
答案 2 :(得分:1)
Type.GetType
不会带有带文件名的字符串。它需要一个类名或结构名。