In that case, you could use the C++ option of overloaded functions. I don't use .NET, so I don't know if they've copied it, but that's how C++ accounts for those sorts of issues.

My suggestion would have been fine for a variant array. Which is where most of my use of variant is.