我快要疯了。
我无法弄清楚为什么这不起作用。
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'
我想当我输入字符串时,它知道它是类型字符串。我知道这可能是一个非常简单的答案,但我遇到了心理障碍。
感谢您的帮助。
答案 0 :(得分: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
方法更改为通用方法......
答案 1 :(得分:0)
您需要传递typeof(string)
而不是string
Wrapper.DecompressAndDeserialize(typeof(string, ms);
用于获取类型的 System.Type 对象。
答案 2 :(得分:0)
你应该这样做
Wrapper.DecompressAndDeserialize(typeof(string), ms);