c# - 如何在接口(interface)上创建一般约束属性?

标签 c# generics

这是完全有效的:

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/

相关文章:

c# - 如何通过 C# 使用 Google 联系人数据 API 获取 Google 帐户的联系人照片

c# - LINQ .Where 查询执行时间超过 5 分钟

generics - 编写一个具有两种参数类型变体的泛型函数

generics - 为什么我收到此代码的 'receiver type mismatch' 错误

.net - F# 泛型约束

c# - 如何使用 C# 获取 DDMMYY 格式的当前日期并将它们拆分为 DD、MM 和 YY?

c# - 有没有办法使用 MEF 指定导入的元数据?

c# - 在 IIS 6.0 或 SMTP 服务中在哪里增加电子邮件的附件大小?

java - GSON 泛型序列化

java - 将对象转换为通用类型以返回