簡體   English   中英

派生 Class 中的鑄造接口屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM