我有一个方法可以返回某种类型的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;
答案 0 :(得分:1)
首先要注意的是,除非在编译时知道所需的强制类型(即#34;静态类型"),否则强制转换对象是没有意义的。
但是,您可以制作一个隐藏演员表的通用方法。它完全等同于在调用代码中使用强制转换,但它看起来像是方法调用,而不是强制转换:
static T Method1<T>() {
object res = GetObjectOfSomeType();
return (T)res;
}
以下是使用此方法的方法:
public static void Method2(){
MethodThatTakesBool(Method1<bool>());
MethodThatTakesInt(Method1<int>());
}