gpt4 book ai didi

c# - 在派生类中转换接口(interface)属性

转载 作者:行者123 更新时间:2023-11-30 14:02:09 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以在派生类中转换接口(interface)属性,例如:

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 并且想知道是否有办法不这样做。我唯一能想到的另一件事是在派生类中创建一个属性,该属性将接口(interface)属性作为图像表示形式返回,例如

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 来在属性中有一个 setter 吗?这听起来不像我对生成器的期望。

关于c# - 在派生类中转换接口(interface)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com