Member predicate Property::getAnUltimateImplementee
Gets an interface member that is (transitively) implemented by this member, if any. That is, either this member immediately implements the interface member, or this member overrides (transitively) another member that immediately implements the interface member.
Note that this is generally not equivalent with
getOverridee*().getImplementee()
, as the example below illustrates:
interface I { void M(); }
class A { public virtual void M() { } }
class B : A, I { }
class C : A { public override void M() }
class D : B { public override void M() }
- If this member is
A.M
thenI.M = getAnUltimateImplementee()
. - If this member is
C.M
then it is not the case thatI.M = getAnUltimateImplementee()
, becauseC
is not a sub type ofI
. (An example wheregetOverridee*().getImplementee()
would be incorrect.) - If this member is
D.M
thenI.M = getAnUltimateImplementee()
.