When working with dynamic code, sometimes we end up with a generic reference that we need to cast to complete our operation.
Example: You make a sub-VI that extracts the plot color of a waveform chart or a graph. The reference input to that VI must be of a common reference type (GraphChart)
The problem is that this property, although it exists for both types of references does not exist in the common type.
Proof: http://content.screencast.com/users/NJKirchner/folders/Jing/media/d223f6b4-83a2-43dd-a830-be17877c9715/2010-09-10_1849.mp4
So if you want to have a piece of code that can operate on both types of references, what do you do?
Somehow you need to have a switch in your code that will conditionally run the correct code based upon the specific reference you wire in.
The way some people do this is by utilizing the 'Class Name' property into a case structure but this has problems w/ flexibility
Proof: http://content.screencast.com/users/NJKirchner/folders/Jing/media/9f771182-303a-40d2-96db-3701ee43ff7f/2010-09-10_1903.mp4
This is a simple case where there is only 1 or 2 sub-types. What about a numeric w/ all of it's myriad of sub types (slider, guage, etc).
The appropriate way to handle this is by doing a type cast, but people typically solve the 'Many Cast' design pattern VERY POORLY through nested error structures. Which looks really ugly
Proof: http://content.screencast.com/users/NJKirchner/folders/Jing/media/7c0e0bfe-966a-458a-8bc8-c44bf6a91cc5/2010-09-10_1913.mp4
So what is our alternative? Introducing the very useful, and practically perfect in every way 'Many Cast' design pattern.
It's stackable
It's scalable
And it even tosses errors properly
Proof: http://content.screencast.com/users/NJKirchner/folders/Jing/media/55e8e391-bb10-4cc2-9a15-2e2a46912bb6/2010-09-10_1933.mp4
The Code is attached, not as a package 'yet'
Demo to Follow in the subsequent post Design Pattern - ManyCast.vi