On Thu, 03 May 2012 13:48:24 -0400, Mehrdad <[email protected]> wrote:
On Thursday, 3 May 2012 at 17:45:20 UTC, Steven Schveighoffer wrote:
This works:
import std.stdio;
class A
{
string name;
this() {this.name = typeid(this).name;}
}
class B : A {}
void main()
{
A b = new B;
A a = new A;
writefln("A: %s, B: %s", a.name, b.name);
}
outputs:
A: testclassname.A, B: testclassname.B
-Steve
Oh, but that's only the name!
The trouble is that window classes have a lot of attributes -- styles,
background brushes, etc. -- that are all shared across instances.
There is currently no way (that I know of) to allow a subclass to define
its own attributes, *without* also giving it a chance to define them
per-instance instead of per-class.
There's the RTInfo method I told you about (recently added) if you want to
stick the information directly into TypeInfo at compile time.
There's also static ctors. Just add a hashtable based on the class name,
and use typeid(this).name as the initial key. You have to handle all the
inheritance of properties yourself, but that shouldn't be too difficult.
-Steve