How to get the implementer of an interface?

Daniel Keep daniel.keep.lists at gmail.com
Thu Jan 22 00:25:38 PST 2009



Qian Xu wrote:
> Hello All,
> 
> how to get the implementer of an interface?
> 
> Here is an example:
> -------------------------------------------------------------
> interface intf_1 {}
> class c_1 : intf_1 {}
> class c_2 : c_1 {}
> 
> c_1 aaa = new c_1;
> c_2 bbb = new c_2;
> auto list = [cast(intf_1)(bbb), cast(intf_1)(aaa)];
> foreach (intf_1 i; list)
> {
>   print_intf_implementor(i);
>   // bbb should return "c_2"
>   // aaa should return "c_1"
> }
> -------------------------------------------------------------
> 
> 
> --Qian

I don't think you can.  i.classinfo returns intf_1's ClassInfo.  Also,
the only two bits of hidden information on an object are the monitor
object and the vtable, so I don't know that you could use those, either.

Of course, I could be wrong.

  -- Daniel


More information about the Digitalmars-d-learn mailing list