static this sucks, we should deprecate it
Michel Fortin
michel.fortin at michelf.com
Wed Jun 3 16:05:32 PDT 2009
On 2009-06-03 10:54:55 -0400, grauzone <none at example.net> said:
> 3. When you want template mixins to contain a static this, your
> approach doesn't really work at all. The template mixin obviously can't
> generate a new module to move the static ctor there. As an example for
> real life usage, look at BCS's serialization code. (See his thread on
> d.D.announce, code link is on his blog post.) He uses a template mixin
> containing a static ctor, to make a class "known" to the serialization
> system. Using a template mixin with static ctor is a nice way to hide
> that mechanism from the user, but it disallows cyclic module
> dependencies. I claim that many users, who try to substitute the
> lacking RTTI with a custom mechanism, will hit the same problem.
I had the same problem when writing the D/Objective-C bridge.
Basically, if you ask the Objective-C runtime to instanciate a class
not previously registered, it won't find it. My choice was to require
manual pre-registrations of the classes you want to use, and register
everything that is possible lazily as soon as you use a bridged class.
A nice way to improve this that wouldn't require static this at all
would be to have better runtime reflection in D so I could iterate over
all classes and registering those implementing the ObjcObject interface
using some kind of mixin-generated static functions which can be
discovered at runtime.
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list