接受类型作为参数的方法中的表达式术语字符串无效

时间:2013-10-15 19:28:57

标签: c# expression

我快要疯了。

我无法弄清楚为什么这不起作用。

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'

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

感谢您的帮助。

3 个答案:

答案 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);

请参阅typeof (C# Reference)

  

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

答案 2 :(得分:0)

你应该这样做

Wrapper.DecompressAndDeserialize(typeof(string), ms);
相关问题