0
比方說,我有一個類,這個類包含一個公共屬性,它是一個System.Drawing.Bitmap,但我希望我的類的使用者能夠設置此值不同類型圖像的數量,而不必真正思考他們通過什麼,我會在幕後進行必要的轉換。這就是我的意思是:使用不同的數據類型設置屬性值
var myBitmapImage = new BitmapImage();
var writeableBitmap = new WriteableBitmap(myBitmapImage);
var mySystemDrawingBitmap = new Bitmap(@"A:\b.c");
var classOne = new TestClass();
var classTwo = new TestClass();
var classThree = new TestClass();
//This should work:
classOne.MyImage = myBitmapImage;
//This should also work:
classTwo.MyImage = writeableBitmap;
//This should work too
classThree.MyImage = mySystemDrawingBitmap;
在此刻,我喜歡這樣想的東西:
public class TestClass
{
private Bitmap _myImage;
public object MyImage
{
get
{
return _myImage;
}
set
{
if (value is Bitmap)
{
_myImage = (Bitmap)value;
}
if (value is BitmapImage)
{
var imageAsSystemDrawingBitmap = ConvertBitmapImageToBitmap((BitmapImage)value);
_myImage = imageAsSystemDrawingBitmap;
}
if (value is WriteableBitmap)
{
var imageAsSystemDrawingBitmap = ConvertWriteableBitmapToBitmap((WriteableBitmap)value);
_myImage = imageAsSystemDrawingBitmap;
}
throw new Exception("Invalid image type");
}
}
private Bitmap ConvertWriteableBitmapToBitmap(WriteableBitmap value)
{
//do work here
return null;
}
private Bitmap ConvertBitmapImageToBitmap(BitmapImage value)
{
//do work here
return null;
}
}
但使用對象和鑄造感覺很2001年,我相信必須有一個更雄辯的方式來實現這一點。有沒有,或者這首先是一個壞主意?
我知道,那裏是一個名字,但不記得是什麼它是或如何工作,非常感謝 – JMK