Inject in to object

Amex Amex at gmail.com
Sun Jun 2 15:27:07 UTC 2019


Debugging in Visual D allows one to easily explore the hierarchy 
of classes.

One problem is being able to easily find other related objects 
within the hierarchy that might be an ancestor.

It would be very useful to be able to "inject" reference in to 
Object so that one could add such information that would be 
available to all objects.

This is more useful in general. Maybe one wants to add common 
functionality too all objects in the program that Object does not 
support yet the program was not designed with a base Object. 
Furthermore, since D is single inheritance it makes it somewhat 
impossible to use this for the debugging method above since 
visual D can only show fields.

Idea:

Allow one to extend object. D does not have partial classes, 
like, say, C#. But for object it would be nice to be able to 
extend it by some means other than extending recompiling DMD, 
LDC, GDC.

class Object:Extend
{
     int RC = 0;
     void Display() { ... }
}

And then RC and Display will be available to all objects.

Display could be a visual inspector for the app's object's and RC 
could be a resource counter.

I don't care about the specific syntax, just the ability to 
easily have the functionality(again, without having to fork my 
own compiler or standard lib).

I don't see why we can't do this, there really are no excuses. I 
should have full control of my own app and what it can do or not.

I realize that it could cause problems for objects compiled in as 
a library that would not have such an extension. These are easily 
dealt with by simply using the new object as the base.

e.g., what we really have is

class Object : Object;

But the base is the original object and the new Object is what is 
used throughout the app(rather than the base). i.e., we really 
have

class ObjectNew : Object;

and as if all our classes in code derive from this ObjectNew 
rather than Object.

There might be a few minor complications but nothing that can't 
be overcome... Even if it's limited to debugging it would be 
worth it.











More information about the Digitalmars-d mailing list