向接口属性添加约束

Sis*_*utl 1 c# generics interface

我正在编写一个接口,我想声明一个返回泛型集合的属性.集合的元素应该实现一个接口.这是可能的,如果是,那么语法是什么.

这不能编译,这是正确的方法吗?

interface IHouse
{
    IEnumerable<T> Bedrooms { get; } where T : IRoom
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ree*_*sey 12

为什么要使用泛型?做就是了:

interface IHouse
{
    IEnumerable<IRoom> Bedrooms { get; } 
}
Run Code Online (Sandbox Code Playgroud)

这是更清洁,因为你已经限制了界面,它的行为几乎完全相同.


Sco*_*man 9

您还必须将接口标记为通用接口:

interface IHouse<T> where T : IRoom
{
    IEnumerable<T> Bedrooms { get; } 
}
Run Code Online (Sandbox Code Playgroud)