2016-05-04 3 views
0

Ich habe this VSTF_RD_Bot example code verfolgt.Bot Framework: Warum kann ich SendAsync nicht verwenden?

Ich bin nicht in der Lage diesen Code zu bauen, weil ich die folgende Meldung:

Die Art Argumente für die Methode ‚Conversation.SendAsync<T>(Message, Func<IDialog<T>>, CancellationToken)‘ kann nicht aus der Nutzung zu entnehmen. Versuchen Sie, die Typargumente explizit anzugeben.

Was bedeutet das und wie kann ich es beheben? Ich habe viele Male versucht, alle Microsoft.Bot.Builder-Pakete neu zu installieren, aber ohne Erfolg. Ich weiß nicht, wie

Antwort

3

Was

bedeutet

Es bedeutet, was es sagt. Sie rufen mit einem Parameter auf, der angegeben werden muss (generische Funktion), aber der Typ kann nicht automatisch abgeleitet werden, Sie müssen ihn also EXPLICITLY angeben.

Es sagt Ihnen auch, dass:

Versuchen Sie, die Typargumente explizit angeben.

und wie kann ich es beheben? Ich habe viele Male versucht, alle Microsoft.Bot.Builder-Pakete neu zu installieren, aber ohne Erfolg.

Ein Einstein auf wiederholt versuchen Dinge, die scheitern - sein Kommentar ist genau richtig und nicht freundlich. Computer funktionieren nicht durch zufällige Kompilierung. Fails one, Neuinstallation wird es nicht beheben.

Wenn das Beispielcode ist, ist es gebrochen - aus welchen Gründen auch immer (mit der falschen Compiler-Version?). Sie sollten tun, was jeder Programmierer in diesem Fall tut und den Fehler beheben, wie per Fehlermeldung.

Conversation.SendAsync<T>(Message, Func<IDialog<T>>, CancellationToken) 

T im Aufruf explizit angeben. Ich kann nur annehmen (Sie kümmern sich nicht darum, die fehlerhafte Codezeile anzugeben - schade Ihnen), dass der Anruf in der Form variable.SendAsync( lautet, was bedeutet, dass der Compiler T erraten müsste - aber es schlägt dort fehl. Geben Sie explizit T an und dieser Fehler verschwindet.

+0

Wenn ich die auf Linie 77 eine rote Linie erscheint unter VSTFDialog 'var Antwort hinzufügen = erwarten Conversation.SendAsync (Meldung,() => new VSTFDialog());' – user299709

+0

Sie nicht T hinzufügen sollten - Sie angeben sollten T, ersetzt den Typ Platzhalter T mit einem sinnvollen Parameter. Sie sollten auch über die Methode nachlesen - es wird ein FUNC > aber Sie spezifizieren() - ohne Parameter. Vielleicht ist es Zeit, ein paar grundlegende C# zu lernen? Generika, generische Parameter, offene und geschlossene Typen und Methoden? Denn wenn du C# nicht kennst, ist das viel zu weit gefasst. – TomTom

+0

Ja, gibt es eine gute Nachlese für Java-Entwickler? Ich denke, das kann ein abhängigkeitsbezogenes Problem mit nuget-Paketen sein – user299709