C#中 object类型的参数遇到重载该如何写得优雅?

大致就是有一个object类型的参数,在调用时遇到重载,目前只能根据类型直接进行强制转换,代码看起来很坑爹:
void text(object obj){
if(obj is int){
func((int)obj);

else{
func((string)obj)


只能这样了吗?是否有更合理的做法?

void DealObjectStr(ref object obj)//写一个方法处理object参数
{
int pp=0;
if(int.TryParse(obj.ToString(),ref pp))
{
obj=Convert.ToInt32(obj);
}else
{
object= obj.ToString();
}
}

DealObjectStr(ref obj);//调用方法前,先处理参数
func(obj);

只能这样!!!
或者你把text重载
void text(int param)
void text(string param)
.......

就是利用ref 参数的特点写个方法处理object类型的参数

用泛型啊 可以解决你的问题

void text(object obj){
    dynamic d = obj;
    func(d);
}