这是完全有效的:
public interface IWidgetGetter
{
IEnumerable<T> GetWidgets<T>() where T : IWidget;
}
也就是说,它定义了一个非类型化接口(interface),该接口(interface)包含一个方法来获取某种实现了 IWidget
的类型的 IEnumerable
。
我如何将其变成属性(property)?
不起作用的东西:
IEnumerable<T> Widgets<T> { get; set; } where T : IWidget
IEnumerable<T> Widgets { get; set; } where T : IWidget
IEnumerable<T> Widgets where T : IWidget { get; set; }
IEnumerable<T> Widgets<T> where T : IWidget { get; set; }
最佳答案
没有通用属性这样的东西。
类型参数仍然是一种参数。就像您无法将采用参数的方法转换为属性一样,您也无法将泛型方法转换为属性。
您可以做的最接近的事情是:
public interface IWidgetGetter<T> where T : IWidget
{
IEnumerable<T> Widgets { get; }
}
关于c# - 如何在接口(interface)上创建一般约束属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531939/