无法继承Shapes

时间:2012-06-21 16:31:43

标签: c# .net wpf inheritance shape

为什么我不能使用继承Shapes class

的类

我需要使用某些方法扩展Rectangle类,但我想以与使用Shape相同的方式使用此类,我该怎么办?

2 个答案:

答案 0 :(得分:6)

可以编写一个派生自Shape的类。你不能编写一个派生自Rectangle的类,因为那是密封的。

答案 1 :(得分:5)

Jon指出,Rectangle是密封的。

根据您的目的,有两个选项:

  1. 您可以使用自己的包含Rectangle的类扩展Shape,并通过合成扩充功能。这些对象不会被视为“是”检查中的矩形。

  2. 您可以为Rectangle编写扩展方法,然后可以在任何Rectangle上使用它们。然后,对象仍将被视为矩形。

  3. e.g。

    public static class RectangleExtensions {
        public static bool IsSquare(this Rectangle r) {
            return r.Width == r.Height;
        }
    }