Ich versuche eine dynamische Methode zu ExpandoObject hinzuzufügen, die die Eigenschaften (dynamisch hinzugefügt) zurückgibt, aber es gibt mir immer einen Fehler.
Stimmt etwas nicht, was ich hier mache?
%Vor%Der Compiler meldet den folgenden Fehler: Fehler 1
Schlüsselwort 'this' ist in a nicht gültig statische Eigenschaft, statische Methode oder Statischer Feldinitialisierer
D: \ rnd \ GettingStarted \ DynamicDemo \ ExpandoFun.cs 20 63 DynamicDemo
Nun, Sie verwenden this
im Lambda, was sich auf das Objekt bezieht, das Action
erzeugt. Sie können das nicht tun, weil Sie sich in einer statischen Methode befinden.
Selbst wenn Sie in einer Instanz-Methode wären, würde es nicht mit this
funktionieren, da es sich auf die Instanz des Objekts beziehen würde, das die Action
erstellt, nicht die ExpandoObject
, wo Sie es verstecken.
Sie müssen auf das ExpandoObject (Student) verweisen:
%Vor%Es gibt kein "dies" für Sie.
Erfassen Sie das Objekt, wenn Sie stattdessen das Lambda erstellen:
student.Introduction = new Action(
()=>
Console.WriteLine("Hello my name is {0} {1}", student.FirstName, student.LastName)
);
Dann funktioniert es.
Sie können das Schlüsselwort this
nicht in der Aktion verwenden, da sich hier this
auf die aktuelle Instanz (nicht Student) bezieht, was den Kompilierungsfehler verursacht, weil der Code in einer statischen Methode ist. Überprüfen Sie dies:
Ausgabe:
%Vor%Sie rufen den Aktionscode über die statische Main-Methode auf. Dort können Sie nicht auf Objekteigenschaften zugreifen. Sie müssen es durch
ersetzen %Vor%z.B.
Tags und Links c# dynamic expandoobject