gpt4 book ai didi

具有返回不同类型的子项的抽象类中的 C# 抽象方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:20 24 4
gpt4 key购买 nike

我了解此处发布的解决方案 Different return types of abstract method in java without casting

但是,我不认为我可以使用泛型,因为一些其他类包含“内容”,我不想在编译时决定它使用哪种类型的内容。

public abstract class Content {
public abstract Content getContent();
}

public class UrlContent : Content {
public String s;
public getContent(){ return s;}

}

public class ImageContent : Content {
public Byte[] image;
public getContent(){ return image;}
}

最佳答案

您可以使用 generics 完成此操作,并且仍然维护一个非通用接口(interface),您可以在任何不需要知道返回类型的地方引用它,例如:

public interface IContent {
object GetContent();
}

public abstract class Content<T> : IContent {
public abstract T GetContent();
object IContent.GetContent()
{
return this.GetContent(); // Calls the generic GetContent method.
}
}

public class UrlContent : Content<String> {
public String s;
public override String GetContent() { return s; }
}

public class ImageContent : Content<Byte[]> {
public Byte[] image;
public override Byte[] GetContent(){ return image; }
}

关于具有返回不同类型的子项的抽象类中的 C# 抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22137624/

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