1

我正在开发一个使用 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;
    }

任何帮助或任何建议将不胜感激。谢谢你的时间!

4

3 回答 3

2

尝试使用类的全名(包括命名空间),不使用“.cs”部分。例如:YourApp.Services.YourWebViewService

于 2012-05-04T23:32:43.563 回答
2

如果您的字符串包含完全限定的类型名称,那么您可以创建实例。

于 2012-05-04T23:32:49.600 回答
1

Type.GetType不接受带有文件名的字符串。它需要一个类名或一个结构名。

于 2012-05-04T23:31:22.113 回答