2013-10-15 14 views
-1

我即將發瘋。接受類型作爲參數的方法中的表達式字符串無效

我不明白爲什麼這不起作用。

Wrapper.DecompressAndDeserialize(string, ms); 

下面是該方法的重載:

public static Object DecompressAndDeserialize(Type t, byte[] bytData) 
    { 
     byte[] b = Decompress(bytData); 
     Object o = Deserialize(t, b); 
     return o; 
    } 

我不斷收到

Invalid expression term 'string' 

我想,當我把字符串,它知道它是string類型的錯誤。我知道這可能是一個非常簡單的答案,但我已經打了一個腦袋。

謝謝你的幫助。

回答

0

你應該這樣做

Wrapper.DecompressAndDeserialize(typeof(string), ms); 
+0

我試過這之前,它說重載的方法是無效的,但再次嘗試之後,你讓我意識到,我參考的程序集的目標是一個Silverlight框架和我使用它的程序面向.NET 4.0。我認爲這是真正的問題。 感謝您的意見。我可能最終會發佈一個新問題哈哈。 – Adam

0

你需要傳遞typeof(string)代替string

Wrapper.DecompressAndDeserialize(typeof(string, ms); 

typeof (C# Reference)

用於獲得一個類型的的System.Type對象。

1

string只是名稱類型的。您需要Type類型的表達式 - 換句話說,對相關類型的Type實例的引用。

獲得,最簡單的方法是使用typeof操作:

Wrapper.DecompressAndDeserialize(typeof(string), ms); 

另一種方法是,以使該方法一般:

public static T DecompressAndDeserialize<T>(byte[] data) 
{ 
    byte[] b = Decompress(data); 
    return (T) Deserialize(typeof(T), b); 
} 

然後調用它爲:

string x = Wrapper.DecompressAndDeserialize<string>(ms); 

你或許可以將Deserialize方法更改爲基因ric,太...

相關問題