VS 2012 RC中的Intellisense不适用于SignalR类



我已经导入了SignalR-Nuget包,SignalR示例在我的项目中运行良好。但是,即使在拥有了所有必需的using语句之后,我也无法使intellisense为SignalR中的类(如Hub类)工作。

集线器代理是在运行时动态生成的,因此您不会获得任何智能感知。

您可以使用Hubify.exe(请参阅http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspx)生成一个静态javascript文件。

或者你可以创建自己的T4模板来做同样的事情。请参阅:https://github.com/SignalR/SignalR/issues/106

更新:

关于C的intellisense#由于ClientsCaller是动态的,因此您不会获得它们的intelligense。

缺少编译时类型检查也会导致缺少IntelliSense。因为C#编译器不知道对象的类型,所以无法枚举其属性和方法。这个问题可以通过额外的类型推断来解决,就像Visual Studio的IronPython工具中所做的那样,但目前C#还没有提供。http://visualstudiomagazine.com/articles/2011/02/01/understanding-the-dynamic-keyword-in-c4.aspx

public class Chat : Hub 
  {
      public void Send(string message) 
      {
          // No intellisense for addMessage, sorry
          Clients.addMessage(message);
      }
  }

查看此处的SignalR文档集线器。呼叫者和客户端本质上是动态的
dynamic是在中添加的一个新关键字。Net4和docent支持编译时检查,因此您无法获得动态对象的intellisense。仅在运行时检查所有动态对象。因此,即使你自己创建了一个动态对象,比如

dynamic d = new ExpandoObject();

并尝试这样做CCD_ 3。你不会得到任何智能,因为框架不知道动态对象中存在什么。并且将仅在运行时被发现。

最新更新