SignalR Nuget パッケージをインポートしましたが、SignalR サンプルはプロジェクトでうまく機能しています。しかし、必要なすべての using ステートメントを作成した後でも、SignalR のクラス (Hub クラスなど) に対してインテリセンスを機能させることができません。
2 に答える
ハブプロキシは実行時に動的に生成されるため、インテリセンスは得られません。
Hubify.exe(http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspxのHubify-sectionを参照)を使用して、静的なjavascript-を生成できます。ファイル。
または、同じことを行う独自のT4-Templateを作成することもできます。参照:https ://github.com/SignalR/SignalR/issues/106
アップデート:
C#のインテリセンスについてClients
とCaller
は動的であるため、インテリセンスを取得することはできません。
コンパイル時の型チェックがない場合は、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);
}
}
Hub.Caller
と Clients は本質的に動的です。
dynamicは .Net 4 で追加された新しいキーワードであり、コンパイル時のチェックをサポートしていないため、動的オブジェクトの intellisense を取得できません。すべての動的オブジェクトは実行時にのみチェックされます。あなた自身が次のような動的オブジェクトを作成したとしても
dynamic d = new ExpandoObject();
そしてこれをやってみてください"d."
。フレームワークは動的オブジェクトに何が存在するかを認識していないため、インテリセンスは得られません。実行時にのみ検出されます。