2012-05-04 5 views
1

Я работаю над приложением Windows Phone 7, которое использует Silverlight. Я хочу создать новый экземпляр класса с строкой, содержащей имя правильного класса, который я хотел бы создать. Ниже приведен снипп кода, на который я ссылаюсь, и я пытаюсь использовать его для создания нового экземпляра. Я знаю из отладки, что serviceClass содержит правильную строку, и если я добавлю к ней «.cs», теперь она будет напрямую соответствовать одному из классов, который у меня есть, поэтому почему он не создается?Создание экземпляра класса в C# из строки

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; 
    } 

Любая помощь вообще или любые предложения были бы весьма признательны. Спасибо за ваше время!

ответ

2

Если ваша строка содержит fully qualified type name, то вы можете создать экземпляр.

+0

Yup, я только что ошибался. Вы можете легко найти, какой тип вашего класса, для этого примера я использовал typeof (ScanWebViewService) .FullName – methodMan

1

Type.GetType не берет строку с именем файла. Он принимает имя класса или имя структуры.

2

Попробуйте использовать полное имя класса (включая пространство имен) без части «.cs». Например: YourApp.Services.YourWebViewService

Смежные вопросы