假设我有以下模型:
public interface IProduct
{
IEnumerable<Ingredient> Ingredients { get; set; }
}
public class Product : IProduct
{
public IEnumerable<Ingredient> Ingredients { get; set; }
}
public class Ingredient
{
}
但我想Ingredients
成为一个List<Ingredient>
而不是一个IEnumerable<Ingredient>
有没有办法对接口进行建模以接受IEnumerable<T>
和List<T>
?
我尝试了以下。但当然,语法不支持这一点,也不会被TEnumerable<Ingredient>
视为通用参数。
public interface IProduct<TEnumerable<Ingredient>>
where TEnumerable<Ingredient> : IEnumerable<Ingredient>
{
TEnumerable<Ingredient> Ingredients { get; set; }
}
public class Product : IProduct
{
public List<Ingredient> Ingredients { get; set; }
}
public class Ingredient
{
}
我意识到这不是很实用,但我只是带着好奇心看这个。