如何使用scala reflect查找父隐式参数?

如何使用scala reflect查找父隐式参数?,scala,scala-reflect,Scala,Scala Reflect,我有两门课: class X[A](implicit ord: Ordering[A]) // + other irrelevant parameters class Y[A: Ordering] extends X[A] 给定一个与Y的隐式构造函数参数相对应的Symbol,我想找到它所对应的父类隐式参数的符号(如果存在) 现在我需要对它进行过滤,以使其具有相同的类型(或超类型,但这与我的用例无关)。我尝试了xParam.typeSignature=:=yOrdSym.typeSignatur

我有两门课:

class X[A](implicit ord: Ordering[A]) // + other irrelevant parameters
class Y[A: Ordering] extends X[A]
给定一个与
Y
的隐式构造函数参数相对应的
Symbol
,我想找到它所对应的父类隐式参数的符号(如果存在)


现在我需要对它进行过滤,以使其具有相同的类型(或超类型,但这与我的用例无关)。我尝试了
xParam.typeSignature=:=yOrdSym.typeSignature
,但没有成功。这是有意义的,因为类型参数有不同的所有者。但是,
xParam.typeSignature=:=yOrdSym.typeSignatureIn(xSym.toType)
xParam.typeSignatureIn(ySym.toType)=:=yOrdSym.typeSignatureIn
也不起作用。如何正确执行?

如果我是你,我会尝试两种方法之一:1)从X和Y传递类型参数,2)从类型签名中剥离类型参数并比较其余的。剥离类型参数不起作用(例如,我可能在两个类中都有两个具有相同上下文绑定的类型参数)。不过,第一种方法应该有效。
val yOrdSym = ...
val yOrdType = yOrdSym.typeSignature
val xImplicitParams = 
  xSym.primaryConstructor.paramLists.flatten.
  filter(xParam => xParam.isImplicit && ???)