这完全有效:
public interface IWidgetGetter
{
IEnumerable<T> GetWidgets<T>() where T : IWidget;
}
Run Code Online (Sandbox Code Playgroud)
也就是说,它定义了一个非类型化接口,该接口包含一个获取IEnumerable某种实现类型的方法IWidget.
如何将其变成属性?
不起作用的事情:
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; }
Run Code Online (Sandbox Code Playgroud)
Luc*_*ski 10
没有通用属性这样的东西.
类型参数仍然是一种参数.就像你无法转换一个将参数带入属性的方法一样,你也无法将泛型方法转换为属性.
你能做的最接近的事是:
public interface IWidgetGetter<T> where T : IWidget
{
IEnumerable<T> Widgets { get; }
}
Run Code Online (Sandbox Code Playgroud)