[英]Casting Interface property in Derived Class
我想知道是否有辦法在派生的 class 中轉換接口屬性,例如:
public interface IImageGenerator
{
object FinalImage { get; set; }
}
public MyClass : IImageGenerator
{
public Image FinalImage{ get;set; } // Its cast as Image instead of Object
}
如果在界面中將事物設置為對象,我必須在整個地方將FinalImage as Image
進行,並且想知道是否有辦法不這樣做。 我能想到的唯一另一件事是在派生的 class 中創建一個屬性,該屬性將接口屬性作為圖像表示返回,例如
public Image MyCastProperty
{
get {return FinalImage as Image;}
}
你可以這樣做:
public interface IImageGenerator
{
object FinalImage { get; set; }
}
public MyClass : IImageGenerator
{
public Image FinalImage{get;set;}
object IImageGenerator.FinalImage
{
get { return FinalImage; }
set
{
if (!(value is Image))
{
throw new ArgumentException("Must be an image");
}
FinalImage = (Image) value;
}
}
}
替代 - 最好 - 使接口通用:
public interface IImageGenerator<T>
{
T FinalImage { get; set; }
}
你真的需要IImageGenerator
在屬性中有一個設置器嗎? 這聽起來不像我對generator的期望。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.