Heim >Backend-Entwicklung >C++ >Wie kann ich in C# auf anonyme Typobjekte außerhalb ihres deklarierten Bereichs zugreifen?
Zugriff auf anonyme Typobjekte außerhalb des deklarierten Bereichs
In C# werden anonyme Typen dynamisch basierend auf aus einer Quelle extrahierten Eigenschaftsnamen und Werten generiert. Der Geltungsbereich dieser Objekte ist jedoch auf den Block beschränkt, in dem sie deklariert sind. Dies wirft die Frage auf: Wie können wir auf anonyme Typobjekte außerhalb ihres deklarierten Bereichs zugreifen?
Verwendung von „Cast by Beispiel“ (Vorsicht empfohlen)
Obwohl dies im Allgemeinen der Fall ist nicht empfohlen, eine Technik namens „Cast by example“ ermöglicht den Zugriff auf anonyme Typobjekte außerhalb ihres Gültigkeitsbereichs. Dieser Hack beinhaltet das Erstellen eines separaten „Beispiel“-Objekts mit denselben Eigenschaften wie der anonyme Typ, auf den wir zugreifen möchten.
Implementierung:
public void FuncB() { var example = new { Id = 0, Name = string.Empty }; var obj = CastByExample(FuncA(), example); Console.WriteLine(obj.Name); } private object FuncA() { var a = from e in DB.Entities where e.Id == 1 select new { Id = e.Id, Name = e.Name }; return a.FirstOrDefault(); } private T CastByExample<T>(object target, T example) { return (T)target; }
Vorbehalte:
Zusammenfassend lässt sich sagen, dass der Zugriff auf anonyme Typobjekte außerhalb ihres Geltungsbereichs mithilfe von „Cast by Beispiel“ möglich ist, es sich jedoch um eine riskante Praxis handelt, die nach Möglichkeit vermieden werden sollte.
Das obige ist der detaillierte Inhalt vonWie kann ich in C# auf anonyme Typobjekte außerhalb ihres deklarierten Bereichs zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!