首頁 > 後端開發 > C++ > 如何在 C# 中存取其範圍之外的匿名類型屬性?

如何在 C# 中存取其範圍之外的匿名類型屬性?

Susan Sarandon
發布: 2025-01-03 22:39:40
原創
887 人瀏覽過

How Can I Access Anonymous Type Properties Outside Their Scope in C#?

訪問超出其範圍的匿名類型物件的屬性

在C# 中使用匿名類型時,您可能會遇到需要存取其範圍的情況屬性超出了聲明的範圍。由於匿名類型的性質,這可能會帶來挑戰。

要存取像 FuncB() 這樣的巢狀函數中定義的匿名類型的屬性,您可以採用一種稱為「透過範例進行轉換」的技術。此方法使用反射來識別匿名物件的類型,然後將其轉換為相容類型。

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;
}
登入後複製

此技術涉及建立一個與匿名物件具有相同屬性的範例物件type(程式碼片段中的範例),然後使用反射來確定物件的類型。最後,將原始物件(目標)轉換為範例物件的類型,這使您可以存取其屬性。

免責聲明:

雖然技術上可以使用這種「透過範例轉換」的技巧來存取其範圍之外的匿名類型對象,通常不建議這樣做。匿名類型被設計為在自己的範圍內使用,並將其生命週期延長到超出範圍可能會導致意外的行為和潛在的錯誤。通常最好將資料傳回呼叫函數或使用另一種物件導向的方法來維護封裝和資料完整性。

以上是如何在 C# 中存取其範圍之外的匿名類型屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板