In diesem Beispiel Konsolenanwendung zugreifen:Kann nicht Eigentum von anonymen Typ in den Debug-Modus (VS2013)
class Program
{
static void Main()
{
DoAsyncFoo();
Console.ReadKey();
}
private static async void DoAsyncFoo()
{
var task = CollectStatsAsync();
dynamic foo = await task;
Console.WriteLine(foo.NumberOfCores);
}
private static async Task<dynamic> CollectStatsAsync()
{
return CollectStats();
}
private static dynamic CollectStats()
{
return new { NumberOfCores = 3 };
}
}
Wenn ich Unterbrechungs
Console.WriteLine (foo.NumberOfCores)
zu setzen
und bewerten foo.NumberOfCores im Debug-Modus, wird der Ausgang des Fehlers ist:
collectedStats.NumberOfCores ‚Objekt‘ enthält keine Definition für ‚NumberOfCores‘ enthalten und keine ‚NumberOfCores‘ Erweiterungsmethode ein erstes Argument vom Typ ‚Objekt‘ die Annahme gefunden werden konnte (möglicherweise fehlt eine using-Direktive oder eine Baugruppe Referenz?)
Weil collectedStats ist "Anonymous Object", nicht "dynamisch". Die Funktion gibt jedoch dynamisch zurück und ich habe sie als dynamisch zugewiesen.
Evaluation ist erfolgreich für:
((dynamic)foo).NumberOfCores;
By the way, habe ich erkannt, dass, wenn ich die Funktion synchron schreiben, Debugger direkt das Ergebnis zurückgeben kann. Es sollte also ungefähr asynchron sein.
Hinweis: Und ich habe auch versucht, Expando-Objekt anstelle von anonymen Typ von Funktion zurückgeben, das Ergebnis ist das gleiche.
@AlexeiLevenkov ist es nicht in einer anderen Versammlung. – skynyrd
@CodeCaster Nein, ich habe bereits versucht, das Expando-Objekt zurück zu senden, und ich werde es an die Frage anhängen. – skynyrd
@skynyrd ok. Jetzt ist klar, dass [dynamic keine Definition für eine Eigenschaft aus einer Projektreferenz enthält] (http://stackoverflow.com/questions/9416095/dynamic-does-not-contain-a-definition-for-a-property) -von-einem-Projekt-Verweis) ist kein Duplikat, da sich der Code in derselben Baugruppe befindet. –