以下代码是我正在编写的程序的一个简单示例。
public class Y
{ }
public class X : Y
{ }
public class W : Y
{ }
public interface IAaa<T>
where T : Y
{
void Execute(T ppp);
}
public abstract class Aaa<T> : IAaa<T>
where T : Y
{
public abstract void Execute(T ppp);
}
public class Bbb : Aaa<X>
{
public override void Execute(X ppp)
{ }
}
public class Ccc : Aaa<W>
{
public override void Execute(W ppp)
{ }
}
public class Factory
{
public static IAaa<Y> Get(bool b)
{
if(b)
return new Bbb();
else
return new Ccc();
}
}
class Program
{
static void Main(string[] args)
{
IAaa<Y> aa;
aa = Factory.Get(true);
}
}
当我编译它时,我收到以下错误
错误 CS0266:无法将类型“ConsoleApplication3.Bbb”隐式转换为“ConsoleApplication3.IAaa”。存在显式转换(您是否缺少演员表?)
错误 CS0266:无法将类型“ConsoleApplication3.Ccc”隐式转换为“ConsoleApplication3.IAaa”。存在显式转换(您是否缺少演员表?)
有什么办法让它工作吗?