首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >该类型必须是引用类型,才能将其用作泛型类型或方法中的参数“T”

该类型必须是引用类型,才能将其用作泛型类型或方法中的参数“T”
EN

Stack Overflow用户
提问于 2011-06-23 16:13:35
回答 2查看 125.6K关注 0票数 217

我对泛型的研究越来越深入,现在有一个我需要帮助的情况。我在下面的“派生”类上得到了一个编译错误,如主题标题所示。我看到很多类似这篇文章的帖子,但我看不出有什么关系。有人能告诉我如何解决这个问题吗?

代码语言:javascript
复制
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> view)
            : base(view)
        {
            SomeModel m = (SomeModel)Activator.CreateInstance(typeof(SomeModel));
            Service<SomeModel> s = new Service<SomeModel>();
            s.Work(m);
        }
    }

    public class Service<SomeModel> where SomeModel : IModel
    {
        public Service()
        {
        }

        public void Work(SomeModel m)
        {

        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-06-23 16:25:26

如果已将T约束为class,则会出现此错误

票数 48
EN

Stack Overflow用户

发布于 2013-03-07 22:48:42

如果您对泛型类或方法设置了约束,则使用它的每个其他泛型类或方法都需要“至少”具有这些约束。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6451120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档