我有课车:
public class Car
{
public int Id { get; set; }
[Range(1, 1000000000, ErrorMessage = "\"{0}\" должна иметь значение между {1} и {2}")]
[Required(ErrorMessage = "\"{0}\" обязательна для заполнения")]
[Display(Name = "Цена")]
public int Price { get; set; }
[Range(1, 1000000000, ErrorMessage = "\"{0}\" должно иметь значение между {1} и {2}")]
[Required(ErrorMessage = "\"{0}\" обязательно для заполнения")]
[Display(Name = "Количество на складе")]
public int Count { get; set; }
public int EquipmentId { get; set; }
public virtual Equipment Equipment { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
并且有一个泛型类型接口,从该类继承,然后在另一个具有业务逻辑的类中使用该类的方法。
界面:
public interface IModelSort<T> where T : new()
{
IEnumerable<T> GetModelSort<K>(IEnumerable<T> model, Func<T, K> predSort, bool asc);
}
班级:
public IEnumerable<T> GetModelSort<K>(IEnumerable<T> model, Func<T, K> predSort, bool asc)
{
return asc ? model.OrderBy(predSort) : model.OrderByDescending(predSort);
}
方法:
public IEnumerable<T> GetSortedModel<T, K>(IEnumerable<T> model, Func<T, K> predSort, bool asc) where T : new()
{
return new ModelSort<T>().GetModelSort(model, predSort, asc).ToList();
}
最初,而new()
不是class
. 但后来我读到了 new() 类型约束并决定尝试替换它。但正如我对这个限制的考虑,类型参数必须有一个不带参数的公共构造函数。但是我的班级根本没有构造函数。那么为什么在 new() 这样的约束下一切都对我有用?也许如果该类根本没有构造函数,那么它意味着某种根本不可见的默认值?