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

本文关键字:类型 返回 对象 | 更新日期: 2023-09-27 18:14:24

我有一个返回某种类型的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;

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

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

但是,您可以创建一个泛型方法来隐藏强制转换。它完全等同于在调用代码中进行强制转换,但它看起来像一个方法调用,而不是强制转换:
static T Method1<T>() {
    object res =  GetObjectOfSomeType();
    return (T)res;
}

下面是如何使用这个方法:

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