Moim zdaniem wystarczy stworzyć klasę reprezentującą obiekt zmiennej.
Klasa musiała by rozpoznawać, co do niej przychodzi i na tej podstawie sama ustalać, jaki ma typ. Oczywiście warto by jeszcze dodać dynamiczne konwertowanie wartości takiej zmiennej. Przykładowo mając wartość liczbową 123, przy operowaniu na niej, jak na tekście trzeba by ją przerobić na tekst "123".