我想为图片添加一些基本属性。我通常会这样做
public class ExtendedImage: Image
{
}
但是当然,这是不允许的,因为它是密封的。
我还可以采取其他哪些方式?我想扩展Image的原因是因为我希望动态创建和销毁对象,这些对象会在应用程序中拖放。所以我想添加操作处理程序和手势,以及从各种显示对象中添加和删除对象。
我不相信我能够将一个Image实例注入我的基类,因为当我尝试让我的动态创建的图像响应各种操作时,数据和图像将被解耦事件等(基于图像放置在主画布上的位置,我需要它具有不同的功能。
非常感谢有关此问题的任何建议。
答案 0 :(得分:3)
您可以使用Tag属性关联实例并获得所需的行为。类似的东西:
public class ExtendedImageController
{
// add methods and properties as necessary
}
// client code
var img = new Image(); // ...
img.Tag = new ExtendedImageController(img); // with reference to image
// in some event handler:
var ctrl = (ExtendedImageController)img.Tag;
ctrl.DoCleanupThings();
// ...