digitalmars.D.learn - How to get the implementer of an interface?
- Qian Xu (18/18) Jan 22 2009 Hello All,
- Daniel Keep (6/29) Jan 22 2009 I don't think you can. i.classinfo returns intf_1's ClassInfo. Also,
- Denis Koroskin (3/21) Jan 22 2009 Try the following:
- Frits van Bommel (6/14) Jan 22 2009 Or
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
Jan 22 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
Jan 22 2009
On Thu, 22 Jan 2009 11:17:20 +0300, Qian Xu <quian.xu stud.tu-ilmenau.de> 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
Try the following:
writefln(cast(Object)i);
Jan 22 2009
Denis Koroskin wrote:On Thu, 22 Jan 2009 11:17:20 +0300, Qian Xu <quian.xu stud.tu-ilmenau.de> wrote:[snip]how to get the implementer of an interface?Try the following: writefln(cast(Object)i);Or writefln((cast(Object)i).classinfo.name); if you want the class name, not the result of toString (which is only the class name if it hasn't been overridden).
Jan 22 2009









Daniel Keep <daniel.keep.lists gmail.com> 