我想从派生类SealedDerived
派生,但我不能,因为该类是sealed
。如果我改为从基类Base
派生,是否有任何方法可以“欺骗”并将this
引用重定向到SealedDerived
类的对象?
例如,像这样:
public class Base { ... }
public sealed class SealedDerived : Base { ... }
public class MyDerivedClass : Base
{
public MyDerivedClass()
{
this = new SealedDerived(); // Won't work, but is there another way?
}
}
编辑根据请求,这里是上下文:我正在移植一个.NET类库,它将System.Drawing.Bitmap
广泛用于 Windows应用商店库。我在 Windows Store 中解决缺少System.Drawing.Bitmap
类的主要想法是实现一个从Bitmap
继承的虚拟WriteableBitmap
类,从而能够返回 Windows Store 类的位图对象。很遗憾,WriteableBitmap
是sealed
。它的基类BitmapSource
(当然)没有密封,但另一方面实际上没有提供操纵图像的方法。因此我的困境。
这样的事情:
using Windows.UI.Xaml.Media.Imaging;
namespace System.Drawing {
public class Bitmap : BitmapSource {
public Bitmap(int width, int height) {
this = new WriteableBitmap(width, height); // Will not work...
...
}
}
}
理想情况下,我希望我的假Bitmap
代表 Windows商店类型的位图类型,以便我可以将我的假Bitmap
类分配给{ {1}}。
答案 0 :(得分:2)
作为答案添加,所以我可以提供代码示例,但随时可以作为评论。如果您认为必须遵守此模式,则隐式类型转换可能会对您有所帮助。在不知道你的图像库正在做什么的情况下,这只会更深入地解决问题,因为任何Graphics.FromImage
都无法在任何方法下工作。如果您的图书馆仅限于GetPixel
,SetPixel
和LockBits
,您可以付出足够的努力来完成这项工作。
public class Bitmap
{
public static implicit operator WriteableBitmap(Bitmap bitmap)
{
return bitmap._internalBitmap;
}
private readonly WriteableBitmap _internalBitmap;
public Bitmap(int width, int height)
{
_internalBitmap = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null);
}
}
public partial class MainWindow : Window
{
public Image XamlImage { get; set; }
public MainWindow()
{
var bitmap = new Bitmap(100, 100);
XamlImage.Source = bitmap;
}
}