class 继承自接口且类型继承自接口类型方法时出现 C# 错误 CS0738
C# Error CS0738 when class inherits from interface and with type that inherits from interfce type method
当class实现一个接口时,我得到了CS0738,接口有一个方法,return类型的接口。
而在class中,return类型是一个实现了return类型接口的结构。
简单地说,这段代码说明了问题所在:
public interface IGame
{
IPlayer WhoWin();
}
public interface IPlayer
{
int ID { get; }
}
在class中:
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
class 中将 WhoWin
的 return 类型从 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;
}
}
当class实现一个接口时,我得到了CS0738,接口有一个方法,return类型的接口。
而在class中,return类型是一个实现了return类型接口的结构。
简单地说,这段代码说明了问题所在:
public interface IGame
{
IPlayer WhoWin();
}
public interface IPlayer
{
int ID { get; }
}
在class中:
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
class 中将 WhoWin
的 return 类型从 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;
}
}