说我有没有
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; }
}
由于CircleEntity
和SquareEntity
未真正将Entity
实施为Shape
类型。
答案 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; }
}