首頁 > 後端開發 > C++ > 如何在 C# 中轉換匿名類型以存取其屬性?

如何在 C# 中轉換匿名類型以存取其屬性?

Susan Sarandon
發布: 2025-01-06 01:37:40
原創
689 人瀏覽過

How Can I Cast an Anonymous Type in C# to Access Its Properties?

轉換匿名類型以存取屬性

在存取其屬性時,將匿名類型轉換回其原始類型可能會出現問題。為了解決這個問題,我們可以利用一個技巧來推斷正確的類型。

欺騙編譯器

方法 Cast;接受一個物件 x 和一個所需類型的類型持有者 typeHolder 。通過將匿名類型a 作為typeHolder 傳遞,編譯器可以推斷出將x 強制轉換為的類型:

private static T Cast<T>(T typeHolder, Object x)
{
    // typeHolder above is just for compiler magic
    // to infer the type to cast x to
    return (T)x;
}
登入後複製

用法:

var a = new { Id = 1, Name = "Bob" };
TestMethod(a);
...
private static void TestMethod(Object x)
{
    // This is a dummy value, just to get 'a' to be of the right type
    var a = new { Id = 0, Name = "" };
    a = Cast(a, x);
    Console.Out.WriteLine(a.Id + ": " + a.Name);
}
登入後複製

替代轉換方法

另一種方法是建立一個擴充方法CastTo,它將值傳遞給被轉換和目標類型:

private static T CastTo<T>(this Object value, T targetType)
{
    // targetType above is just for compiler magic
    // to infer the type to cast value to
    return (T)value;
}
登入後複製

用法:

var value = x.CastTo(a);
登入後複製

建議

雖然這些技術允許轉換匿名類型,但它為了清晰和易用性,建議使用真實類型。

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

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