我有以下代码示例
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'的约束。
从GenericController类中删除ITest接口可以正常工作。我需要该接口,所以键入将控制器对象转换为接口我可以设置新创建的对象的几个属性。
如何解决此问题。
-Rajesh
答案 0 :(得分:0)
您确定Employee
实施ITest
??
如果它在GenericController上没有ITest
并且它显示violates constraint
,那么,结论是你传递的是一个没有实现ITest
的Type。