‏GenericArguments[0], 'EntityGenericBase`1[TModel]' 违反了类型参数 'TModel' 的约束

Posted

技术标签:

【中文标题】‏GenericArguments[0], \'EntityGenericBase`1[TModel]\' 违反了类型参数 \'TModel\' 的约束【英文标题】:‏GenericArguments[0], 'EntityGenericBase`1[TModel]' violates the constraint of type parameter 'TModel'‏GenericArguments[0], 'EntityGenericBase`1[TModel]' 违反了类型参数 'TModel' 的约束 【发布时间】:2018-12-30 18:55:25 【问题描述】:

谁能帮我解决这个问题: 我使用 c# Winforms 作为伙伴创建了一个通用基础“用户控件”:

public class EntityGenericBase<TModel> : UserControl
    where TModel : class, IEntityClass, new()

我已经创建了另一个继承上述“EntityGenericBase”的用户控件:

public class DepartmentView : EntityGenericBase<Department>

    public DepartmentView():base()
    
        InitializeComponent();
    

但不幸的是,当我尝试在设计模式下查看用户控件时,我收到以下错误:

GenericArguments[0], 'Department', on 'EntityGenericBase`1[TModel]' 违反了类型参数 'TModel' 的约束。

我仍然可以毫无问题地运行应用程序。

备注:当我删除约束“where子句”时,一切正常。

我使用“Visual Studio Community 2017”

【问题讨论】:

报错信息说Department is not implemented IEntityClass or It's not a class, or it doesn't have a parameterless constructor. 感谢您的宝贵回复。是的,它工作正常,但没有“位置”约束。 不客气。仔细阅读下面的评论/答案,并确保 Department 类满足所有条件。 但是当我添加'where TModel : class, IEntityClass, new() 时会产生上述错误。当我从约束中删除“IEntityClass”时,问题就解决了 其实好像是已知问题***.com/questions/41931853/… 【参考方案1】:

如错误信息所述

GenericArguments[0], 'Department', on 'EntityGenericBase`1[TModel]' 违反类型参数“TModel”的约束。

您的模型部门违反了一项或多项约束

class, IEntityClass, new()

部门不是其中的一个或多个

    它不是一个类 它没有实现 IEntityClass 接口 它没有无参数构造函数

【讨论】:

非常感谢。尽管我已经检查了几次,但我会进一步检查。 我已经检查过,一切看起来都很好,请看一下'Department' Class 和'IEntityClass' //IEntityClass 接口 public interface IEntityClass string ModelName get;放; //EntityClass 类 public abstract class EntityClass : IEntityClass public string ModelName get;放; //部门类 public class Department : EntityClass private static Department _default;公共静态部门默认获取返回_default ?? (_default = 新部门()); 公共部门() @نديمالجود 好的,你为什么不干脆摆脱 IEntityClass 接口并在约束中使用抽象的 EntityClass 呢?当你有抽象类时,看起来你不需要接口 有一点值得一提。重新启动 Visual Studio 后,我可以在设计模式下显示“UserControl”,但一旦我构建项目,就会出现错误【参考方案2】:

这是一个已知问题,唯一的解决方法似乎是重新启动 VS Designer error: GenericArguments[0], 'X' on 'Y' violates the constraint of type parameter 'Z'

【讨论】:

以上是关于‏GenericArguments[0], 'EntityGenericBase`1[TModel]' 违反了类型参数 'TModel' 的约束的主要内容,如果未能解决你的问题,请参考以下文章

macbook上的en0上的IP别名

Can't find model 'en'

php 庞尔¡免费! en vez de 0€ovacío

tnc_Programme_en

Solr 找不到资源 stopwords_en.txt

rom正弦波发生器