If you pass a .NET object from a code module to your operator interface you are passing it across appdomains. In order for that to work, the .NET framework requires that your object either be serializable (in which case it will make a new copy in the appdomain it's passed in to), or derived from MarshalByRefObject. Also what version of TestStand are you using? I highly recomment using TestStand 2010 or higher if you are doing a lot with .NET because the .NET adapter was greatly improved starting with TestStand 2010. If you are using TestStand 2010 or higher, you can call GetValInterface on the object reference variable which stores your .NET object to pull it into the appdomain of your user interface (object must be serializable or dervived from MarshalByRefObject). You should also make sure that the assembly which defines the class for your object is either in the same directory as your executable or in the GAC, otherwise you will get an error that the assembly cannot be found/loaded when the object is passed across appdomains. There are otherways to workaround the load issue with an AssemblyResolve event handler, but that is more complicated.
I also recommend doing some reading on MSDN (Microsoft Developers Network) for more details about issues with cross appdomain objects, serialization, and other .NET specific issues.