2012-08-28 40 views
1

我已經進口SignalR NuGet包和SignalR樣品在我的項目運作良好。但即使在使用了所有必需的語句之後,我也無法獲得SignalR中類的intellisense(如Hub類)。智能感知在VS 2012 RC不工作的SignalR類

+0

你進口德signalR命名空間? –

+0

是的,我導入了所有的命名空間,並且我的解決方案構建成功並且成功運行。唯一的問題是智能感知。 – Geethanga

回答

1

看看SignalR文檔here 的Hub.Caller和客戶端在本質上是動態的。
dynamic是檢查,所以你不能對動態物體獲得智能.NET 4的和dosent支持編譯時增加了一個新的關鍵字。所有的動態對象只在運行時檢查。所以即使你你自己創建一個類似

dynamic d = new ExpandoObject(); 

動態對象,並嘗試做到這一點"d."。你不會得到任何intellisense,因爲框架dosent知道什麼都存在於動態對象中。並且僅在運行時纔會被發現。

2

集線器代理在運行時動態生成的,所以你不會得到任何智能感知它。

您可以使用Hubify.exe(見http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspx Hubify段)生成靜態的JavaScript文件。

或者你可以創建自己的T4-模板做同樣的事情。請參閱:https://github.com/SignalR/SignalR/issues/106

更新:

關於智能感知的C# 你不會爲ClientsCaller獲得智能,因爲它們是動態的。

沒有編譯時類型檢查導致也缺少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); 
     } 
    } 
+0

感謝您的回覆Mats。這裏我不是在談論JS。我遇到了C#類的問題。你有什麼想法爲什麼發生這種情況。 – Geethanga

+0

你能否用應該給你智能感知的代碼更新你的例子,但是不要? – MatteKarla

+0

以下是樣本代碼。公共類聊天:集線器 { 公共聊天() { } 公共無效發送(字符串消息) { Clients.addMessage(消息); } } – Geethanga