-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'

我想当我输入字符串时,它知道它是字符串类型。我知道这可能是一个非常简单的答案,但我遇到了心理障碍。

感谢您的任何帮助。

4

3 回答 3

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方法更改为通用方法...

于 2013-10-15T19:33:05.017 回答
0

你需要通过typeof(string)而不是string

Wrapper.DecompressAndDeserialize(typeof(string, ms);

请参阅typeof(C# 参考)

用于获取类型的System.Type对象。

于 2013-10-15T19:31:07.273 回答
0

你应该做这个

Wrapper.DecompressAndDeserialize(typeof(string), ms);
于 2013-10-15T19:31:08.847 回答