Once again I find myself shaking my fist in the general direction of Redlands, CA. Can't they ever get anything right?
Hint: When your API contains the following interfaces;
- IFeatureLayer
- IFeatureClass
- IGeoFeatureLayer
- IDEFeatureClass
- IGPFeatureLayer
And to push things over the edge, the design wizards in Redlands have decided that it takes a dozen or or more twisty lines of under-documented property accesses and mystery casts to get from any one of them to another.
(snagged from the Fail blog)
For ESRI/ArcObjects virgins, you can get a glimpse of the horror in a conveniently visual form here: http://edndoc.esri.com/Arcobjectsonline/Diagrams/AllOMDs.pdf (warning: huge PDF; also an older version but what google found quickly).And for those of you who have shared my pain, and might be interested as to what spurred this particular outburst (I'm probably into the hundreds of these, but this is the first I've published outside of a nasty email or two):
I'm implementing a geoprocessing tool, and trying to do it properly and robustly. ((Which means, at the moment, somehow getting from an IGPValue which contains a catalog path to an (output) feature layer, to the appropriate IFeatureWorkspace that can create a feature class in that location -- even if, for example, it's inside a personal geodatabase instead of a good ol' shapefile.))
Other things not working right yet:
- Having my IGPFunction::Validate magically create an IDEFeatureLayer that appropriately describes its output. Necessary, I think, for people to be able to wire my tool up in Model Builder. (Side rant for another day -- Model Builder's value as a scripting/programming/automation tool: nearly worthless. Model Builder's value as a PowerPoint slide generator: $$$$.)
- Getting IGPUtilities::GenerateDefaultOutputValue do something more interesting than E_FAIL.
The tool itself is a reincarnation of Boundary Maker, an old Avenue script I wrote ages ago.