当类从接口继承并且具有从接口类型方法继承的类型时,C#错误CS0738



当类实现一个接口时,我得到了CS0738,接口有一个方法,返回类型为接口。

类中的返回类型是实现返回类型接口的结构。

简单地说,这个代码显示了问题:

public interface IGame
{
IPlayer WhoWin();
}
public interface IPlayer
{
int ID { get; }
}

在课堂上:

public class MyGame : IGame
{
// ERROR CS0738
public MyPlayer WhoWin()
{
// ...
return null;
}
}
public class MyPlayer : IPlayer
{
public int ID 
{
get
{
return ColorTranslator.ToWin32(Color);
}
}
public Color Color;
}

我该怎么办?我该如何解决这个问题?

MyGame类中将WhoWin的返回类型从MyPlayer更改为IPlayer,这样就可以工作了。

public class MyGame : IGame
{
// CHANGE THIS TO IPlayer like here:
public IPlayer WhoWin()
{
// ...
return null;
}
}
public class MyPlayer : IPlayer
{
public int ID 
{
get
{
return ColorTranslator.ToWin32(Color);
}
}
public Color Color;
}

您可以制作IGame通用接口并应用where T : IPlayer约束

public interface IGame<out T> where T : IPlayer
{
T WhoWin();
}

然后像一样实现

public class MyGame : IGame<MyPlayer>
{
public MyPlayer WhoWin()
{
// ...
return null;
}
}

相关内容

  • 没有找到相关文章