gpt4 book ai didi

c# - 作为返回类型的继承接口(interface) - 无法转换表达式

转载 作者:太空宇宙 更新时间:2023-11-03 19:11:04 25 4
gpt4 key购买 nike

我有以下内容

public interface IAwesomeInterface
{
string Prop1 {get; set;}
string Prop2 {get; set;}

List<SomeObject> GetObjects();
}

public abstract class AbstractObject : IAwesomeInterface
{
public string Prop1 {get; set;}
public string Prop2 {get; set;}

public abstract List<SomeObject> GetObjects();

}

public class ConcreteObject1 : AbstractObject
{
public List<SomeObject> GetObjects()
{
return new List<SomeObject>();
}
}

public class ConcreteObject2 : AbstractObject
{
public List<SomeObject> GetObject()
{
//do some other stuff
return new List<SomeObject>();
}
}

和实现:

public class ObjectFactory
{

public IAwesomeInterface GetObject()
{

return new ConcreteObject1();
}
}

我收到“无法将表达式类型 ConcreteObject1 转换为返回类型 IAwesomeInterface”的错误

既然ConcreteObject1继承自AbstractObject,那是不是意味着它实现了IAwesomeInterface,应该是一个可以接受的返回值?

最佳答案

您的代码还会引发另一个错误,这就是第二个错误存在的原因:

'ConcreteObject1' does not implement inherited abstract member 'AbstractObject.GetObjects()'

修复这个,你引用的那个也会消失。为此,在 ConcreteObject1ConcreteObject2 中的 GetObjects() 方法旁边添加 override:

public class ConcreteObject1 : AbstractObject
{
public override List<SomeObject> GetObjects()
{
return new List<SomeObject>();
}
}

public class ConcreteObject2 : AbstractObject
{
public override List<SomeObject> GetObjects()
{
//do some other stuff
return new List<SomeObject>();
}
}

附言。您的代码在 GetObjects 方法名称中有错字。您错过了方法名称末尾的 s

关于c# - 作为返回类型的继承接口(interface) - 无法转换表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20576614/

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