Your direct invocation of the "get_Controls" method gets me going again.
I'm glad that works, but reflecting on this it seems that one pretty much *have* to offer the return-type to PROPERTY/GetProperty when there are ambiguities of this sort, which there will be. That's a bit iffy syntactically, even though the implementation is easy enough. And of course the error-message would still be pretty confusing.
C#'s type inference mechanism tells me that in the example, if foo has type TestPropertiesB, then bar in
var bar = foo.MyProperty();
has type String, this being an error:
var bar = (int) foo.MyProperty();
whereas in
var bar = ((TestPropertiesA) foo).MyProperty();
bar is an int.
I guess one could write a custom Binder that would implement a 'most specific property' thing, but that does kind of feel like overkill.
Regards, Iver