1| 10
2| test string
3| 5.003

というデータに対して

string s1 = GetData(1行目);
string s2 = GetData(2行目);
int a = GetData(1行目);
float f = GetData(3行目);

としたときに

s1 = "10"
s2 = "test string"
a = 10
f = 5.003f

とできるようなGetData()の実装は「無理」って事ですか?
もちろん

int b = GetData(2行目);

は「危険なキャスト」として例外投げてかまわないんですが・・・