找不到类型或命名空间名称“T”

时间:2013-11-06 06:10:31

标签: c# .net asp.net-mvc asp.net-mvc-3 web-services

我尝试在VS 2010 MVC3应用程序中实现LinkedIn身份验证。我指的是来源

博客网站中的代码。但我发现在构建代码时发生了错误。

请参见下图。

enter image description here

这个'T'对象需要任何引用。

请帮忙。

更新问题

我根据@StuartLC

更新了我的问题

enter image description here

3 个答案:

答案 0 :(得分:4)

您需要更改方法签名,如下所示:

private T Deserialize<T>(string xmlContent)

然后,每次调用方法时都明确需要提供类型参数,因为T无法推断(例如,来自参数),即

var widget = Deserialize<Widget>(someXmlString);

编辑根据@ pswg的评论,如果这样做有意义的话,你也可以使整个类具有通用性。然后,您不需要在Deserialize方法中指定类型参数,因为它现在是类中固有的。但是,如果要在类之外调用该方法,则需要使该方法更加可见(例如public)。

var widgetDeserializer = new MyDeserializerClass<Widget>();
var widget = widgetDeserializer.Deserialize(someXmlString);

答案 1 :(得分:2)

您需要指定反序列化对象的类型...

private T Deserialize<T>(string xmlContent)
{
    ....
}

答案 2 :(得分:0)

它应该是这样的

private T FuncName<T>(T param) where T : class
{
            return param;
}