我有一个类:
class AClass : CClass
class BClass : CClass
我需要在下面的代码中使用它们:
POJO类:
class SomeObject<T> where T : CClass
T clazz;
setClass(T clazz){
this.clazz = clazz;
.....
控制器类:
class ObjectExecutor{
private SomeObject<CClass> someObject;
public ObjectExecutor execute(SomeObject<CClass> so){
someObject = so; //exception when so - is the instance of AClass
return this;
}
public void build(){
....
}
}
所以当我尝试实现它时:
SomeObject<AClass> soA = new....
soA.execute(soA) //exception point
.build()
我得到了异常: 无法将AClass转换为CClass
因此我需要使用类似以下的东西:
class ObjectExecutor{
private SomeObject someObject; //without <> signature
..... ....
但是'C#'编译器不允许这种方式。
如何在'C#'中使用通用扩展?
截图:
我有两个类,它们之间进行了扩展:
接口:
实现:
问题发生的地方: 1.
2.
错误:
Arg "1": the type conversion from "MyTest.Terkin.ActionElement<Ranorex.Button>" in "MyTest.Terkin.ActionElement<Ranorex.Adapter>" is impossible (CS1503) - C:\Users\Valeryi\Documents\Ranorex\RanorexStudio\MyTest\Recording1.UserCode.cs:60,23