将对象类型更改为其子类型并将其返回

时间:2014-07-24 01:08:26

标签: c# object casting return

我有一个方法可以返回某种类型的Object。在接收端,我希望将此对象转换为它的类型而不转换它。我可以这样做:

public static Object Method1(){
return GetObjectOfSomeType();
}

public static void Method2(){
MethodThatTakesBool((bool) Method1());
}

但是我有很多类似于Method2的方法,我想避免每次都抛出它。 (它并不总是bool ......每次都是不同的类型。)我想做的是:

public static Object Method1(){
return (GetType()) GetObjectOfSomeType();
}

public static void Method2(){
MethodThatTakesBool(Method1());
}

如何将对象转换为自身,然后将该对象作为该类型返回?我试过这个,但它不起作用:

return (myObject.GetType().ToString()) myObject;

1 个答案:

答案 0 :(得分:1)

首先要注意的是,除非在编译时知道所需的强制类型(即#34;静态类型"),否则强制转换对象是没有意义的。

但是,您可以制作一个隐藏演员表的通用方法。它完全等同于在调用代码中使用强制转换,但它看起来像是方法调用,而不是强制转换:

static T Method1<T>() {
    object res =  GetObjectOfSomeType();
    return (T)res;
}

以下是使用此方法的方法:

public static void Method2(){
    MethodThatTakesBool(Method1<bool>());
    MethodThatTakesInt(Method1<int>());
}