0

我有以下代码示例

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', on 'MvcApplication2.Controllers.GenericController`1[T]' 违反了类型 'T' 的约束。

从 GenericController 类中删除 ITest 接口可以正常工作。我需要该接口,因此将控制器对象类型转换为接口我可以设置新创建对象的一些属性。

如何解决这个问题。

-拉杰什

4

1 回答 1

0

你确定你的Employee工具ITest??如果它在没有ITestGenericController 的情况下工作并且它说violates constraint,那么,结论是你正在传递一个没有实现的类型ITest

于 2013-04-15T20:44:27.077 回答