相关疑难解决方法(0)

该类型必须是引用类型,以便在泛型类型或方法中将其用作参数"T"

我正在深入研究仿制药,现在我需要帮助.我在下面的'Derived'类中遇到编译错误,如主题标题所示.我看到很多其他类似的帖子,但我没有看到这种关系.有人能告诉我如何解决这个问题吗?

using System;
using System.Collections.Generic;


namespace Example
{
    public class ViewContext
    {
        ViewContext() { }
    }

    public interface IModel
    {
    }

    public interface IView<T> where T : IModel 
    {
        ViewContext ViewContext { get; set; }
    }

    public class SomeModel : IModel
    {
        public SomeModel() { }
        public int ID { get; set; }
    }

    public class Base<T> where T : IModel
    {

        public Base(IView<T> view)
        {
        }
    }

    public class Derived<SomeModel> : Base<SomeModel> where SomeModel : IModel
    {

        public Derived(IView<SomeModel> …
Run Code Online (Sandbox Code Playgroud)

c# generics

200
推荐指数
3
解决办法
11万
查看次数

C#.什么"类型T必须是引用类型才能将其用作参数." 手段?

我正在尝试在我的MVC C#Entity Framework Application上创建一个通用控制器.

public class GenericRecordController<T> : Controller
{
    private DbSet<T> Table;
    // ... 

    public action()
    {
        // ... 
        db.Entry(T_Instance).State = System.Data.Entity.EntityState.Modified;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,DbSet < T >和T_Instance行有编译器错误.

类型T必须是引用类型才能将其用作参数.

当我限制它为一个类

Controller where T : class
Run Code Online (Sandbox Code Playgroud)

它解决了.

上述错误意味着什么?

我不是要求解决方案.我想理解为什么会出现这个错误以及为什么限制它来解决它.

c# generics controller

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

generics ×2

controller ×1