使用派生的属性实现接口

时间:2016-06-27 11:22:28

标签: c# interface

说我有没有

interface ISomething
{
    Shape Entity { get; set; }
}

public class Shape
{ }

public class Circle : Shape
{ }

public class Square : Shape
{ }

我怎样才能达到以下效果:

public class CircleEntity : ISomething
{
    Circle Entity { get; set; }
}

public class SquareEntity: ISomething
{
    Square Entity { get; set; }
}

由于CircleEntitySquareEntity未真正将Entity实施为Shape类型。

1 个答案:

答案 0 :(得分:5)

通过使用generic interface,您可以创建实体类型变量,该变量可以在派生类型上定义。

interface ISomething<T> where T:Shape
{
    T Entity { get; set; }
}

public class CircleEntity : ISomething<Circle>
{
    Circle Entity { get; set; }
}

public class SquareEntity: ISomething<Square>
{
    Square Entity { get; set; }
}