考慮我的代碼:鑄造從類型類型
public class MyClass
{
//...
}
object ob = new MyClass();
Type t = ob.GetType();
有了這些信息,我需要在運行時投ob
到MyClass
。 我該怎麼做?
考慮我的代碼:鑄造從類型類型
public class MyClass
{
//...
}
object ob = new MyClass();
Type t = ob.GetType();
有了這些信息,我需要在運行時投ob
到MyClass
。 我該怎麼做?
假設MyClass
是在編譯時已知:
object ob = new MyClass();
if (ob.GetType() != typeof(MyClass))
MyClass convertedObject = (MyClass)ob;
我認爲OP在編譯時並不知道它是'MyClass',因爲他使用'GetType'。 –
@TimSchmelter編輯首先檢查ob是否爲MyClass類型 – AssaultingCuccos
然後[@ Blachshma's approach](http://stackoverflow.com/a/13930381/284240)更好。但是你們都假定編譯時知道'MyClass'類型。 –
Convert.ChangeType
是你在找什麼。
// With ob and t from your example.
var myClassInstance = Convert.ChangeType(ob, t);
但是正如有些人所說,最好知道爲什麼你首先需要這個。有可能你的解決方法有一種氣味,它可以更容易地完成,沒有任何類型的功夫。
+ for「type kung-fu」:) –
這個我試過了,但'ChangeType'方法會返回類型'Object',而不是我想要的類型 –
關於SO的數以百萬計的類似問題;)爲什麼在編譯時你不知道對象的類型? –
要使用'(MyClass)ob'來強制使用'ob'來輸入'MyClass'。但這是你問的嗎? –
請告訴*爲什麼*您需要這樣做。 – sloth