- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想扩展矩形
类。目前,此类具有属性 left
、right
、...,我想添加属性 topLeft
、topRight
>,...
我知道我可以创建一些扩展方法,例如
public static Point TopLeft(this Rectangle rect)
{
return new Point(rect.Left, rect.Top);
}
但我想将其添加为属性。我考虑过继承Rectangle
并添加缺少的信息
internal class Rect : Rectangle
{
public Point TopLeft
{
get
{
return new Point(X, Y);
}
}
public Point TopRight
{
get
{
return new Point(X + Width, Y);
}
}
}
但是矩形
是一个密封类。
cannot derive from sealed type 'Rectangle'
那么不可能扩展这个类吗?
最佳答案
您可以使用adapter pattern :
internal class RectAdapter
{
private Rect _rect;
public RectAdapter(Rectangle rect)
{
_rect = rect;
}
public Point TopLeft
{
get
{
return new Point(_rect.X, _rect.Y);
}
}
public Point TopRight
{
get
{
return new Point(_rect.X + _rect.Width, _rect.Y);
}
}
}
您不能从 Rectangle
继承,但可以将其作为构造函数参数。如果您不想覆盖其他行为,只需使用 _rect
将它们委托(delegate)给 Rectangle
,例如:
public void Intersect(Rectangle rect) => _rect.Intersect(rect);
关于c# - 使用属性扩展密封类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52140435/
当数据类扩展包含非抽象 open val 属性的密封类时,生成的子数据类包含与父类的私有(private)字段重复的私有(private)字段。 sealed class Foo(open val f
当封装一个.jar 文件(整个.jar,而不是特定的包)时,实际上封装了哪些包?它只是包含.class 文件的包,还是还包含父包和子包? 举个例子,假设我有一个包含单个 .class 文件 com.c
我可以很容易地为这样的密封案例类族一般派生一个编解码器: import io.circe._ import io.circe.generic.auto._ sealed trait Base case
我有一个类层次结构: class C1 { virtual object M1(); } class C2: C1 { override sealed object M1(); } class C3:
有什么区别: type MovieType = {| +blob?: string, +name: string, +url?: string |}; 和 type MovieType =
想象一个这样的 secret : apiVersion: v1 kind: Secret metadata: name: {{ include "test-cicd.fullname" . }}
因此,我的一位开发人员使用这样的函数为 Magento 电子商务网站制作自定义导航: getUrl() ?>">__('about') ?> 唯一的问题是它的输出如下: about 据我了解,如果同时
我是一名优秀的程序员,十分优秀!