2013-04-15 3 views
0

Я следующий пример кодаСоздание родового объекта класса с помощью CreateInstance

public interface ITest 
{ 
    string abc { get; set; } 
} 

public class GenericController<T> : Controller where T : class, ITest, new() 
{ 
    public string abc { get; set; } 

    public ActionResult Index() 
    { 
     ViewBag.Message = "Welcome to ASP.NET MVC!"; 

     return View(); 
    } 
} 

Теперь пытается создать объект с следующий код дает мне ошибку -

Type typeObject = typeof(Employee); 
Type object1 = typeof(GenericController<>).MakeGenericType(typeObject); 
controller = (IController)Activator.CreateInstance(object1); 

Ошибка приведенной здесь

GenericArguments [0], 'MvcApplication2.Controllers.Employee', в 'MvcApplication2.Controllers.GenericController`1 [T]' нарушает ограничение типа T.

Извлечение интерфейса ITest из класса GenericController работает правильно. Мне нужен этот интерфейс, поэтому введите тип объекта контроллера в интерфейс. Я могу установить несколько свойств вновь созданного объекта.

Как исправить эту проблему.

-Rajesh

+1

Я нашел решение для того же. Класс должен быть написан следующим классом операторов открытый класс GenericController : Контроллер, ITest, где T: класс, новый() -Rajesh – user1872862

ответ

0

Вы уверены, что ваши Employee орудия ITest ?? Если он работает без ITest на GenericController, и он говорит violates constraint, то вы заключаете, что вы передаете тип, который не реализует ITest.

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

  • Нет связанных вопросов^_^