【发布时间】:2015-02-13 20:31:16
【问题描述】:
我有以下课程:
public class KeyDTO<T>
{
public T Id { get; set; }
}
到目前为止一切顺利,但我希望类型参数 T 是不可为空的类型。 我在某处读到这可能是可行的:
public class KeyDTO<T> where T : IComparable, IComparable<T>
{
public T Id { get; set; }
}
但是,如果我将 public T Id 更改为 public T? Id,我会收到一个编译错误,告诉我 T 必须不可为空。
如何指定泛型类型参数必须不可为空?
编辑
我想完成此操作,因为我想使用 [Required] 属性注释我的 Id 属性,如下所示:
public class KeyDTO<T> {
[Required]
public T Id { get; set; }
}
[Required] 所做的是验证模型,因此T 不能为空。
但是,如果我有KeyDTO<int>,Id 将被初始化为0,绕过我的[Required] 属性
【问题讨论】:
标签: c# .net generics types interface