Chris,
<snip>
I'm unconditionally NULLing the MyChildObject reference in Destroy(), which should free the reference if it was pre-existing, and nuke the object if it was newly created.
You're correct, as long as the object whose property you're null-ing didn't instantiate MyChildObject. Otherwise, MyChildObject is now "undead." You can't access it, you can't kill it, but it's still there haunting and mocking you. Oh yeah, and hogging memory (symptoms include, but not limited to, memory leaks, forms that won't close, phantom data sessions, etc.)
This is one of the reasons you need to have code that looks disturbingly similar to:
IF VARTYPE(This.oMyChildObject) = 'O' and !ISNULL(This.oMyChildObject)
ENDIF
>I'm going to have to look into GetBizObject again, no need to reinvent the wheel. I think the only thing holding me back is being able to address the child object by name in code.
Not sure to what you're referring here. Are you saying that now you have an abstract method that works for all your objects, you're not sure how to use that abstraction to tell you about the specific object you need?
If so, I can show you some custom code we wrote to create object properties using our "standard" object nomenclature. If not, can you give me an example of your issue?
Hope that clears the air,
---J