从字符串中实例化C#中的类

时间:2012-05-04 23:27:44

标签: c# .net windows-phone-7 silverlight-4.0

我正在使用使用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;
    }

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

如果您的字符串包含fully qualified type name,那么您可以创建实例。

答案 2 :(得分:1)

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