【问题标题】:The type or namespace name 'T' could not be found找不到类型或命名空间名称“T”
【发布时间】:2013-11-17 06:56:27
【问题描述】:

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

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

请看下图。

此“T”对象中需要任何引用。

请帮忙。

更新问题

我根据@StuartLC 更新我的问题

【问题讨论】:

  • 是用来表示类型的吗?对于泛型。
  • 这是一个通用占位符...该函数应该出现在通用占位符命名为 T 的通用类中
  • 您必须使用类型参数调用它:return Deserialize<Person>(response.Content);
  • 谢谢@p.s.w.g。我这样做

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


【解决方案1】:

您需要像这样更改方法签名:

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】:

需要指定反序列化对象的Type...

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

【讨论】:

    【解决方案3】:

    应该是这样的

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-12
      • 2011-05-13
      • 2013-03-25
      • 2012-06-19
      • 2017-11-29
      • 2012-09-27
      相关资源
      最近更新 更多