簡體   English   中英

在C#中檢索匿名對象的屬性

[英]Retrieving Anonymous Object's Property in C#

我有以下代碼

using System;
using System.Collections.Generic;

public class Test
{
    public static void Main()
    {
        List<object> list = new List<object>();
        list.Add(new {
            Value = 0
        });
        //Console.WriteLine(list[0].Value);
    }
}

有沒有一種簡單的方法來編寫注釋的代碼行而不會導致編譯時錯誤? 我知道我可以求助於使用dynamic關鍵字或為使用Reflection的Object類實現擴展方法,但是也許還有另一種更可接受的方法嗎?

目標是避免創建類,因為它的唯一目的是存儲數據。 但與此同時,稍后仍可以在程序中檢索數據。 這段代碼最終將以Web方法結尾,這就是為什么我首先希望它是動態的/匿名的。 所有對象最終將具有相同的屬性,因為它們將存儲存儲在表中的值,但是稍后需要這些值進行其他計算。

有沒有一種簡單的方法來編寫注釋的代碼行而不會導致編譯時錯誤?

與聲明列表的方式不同。 如果您的列表僅包含該匿名類型的對象,則可以使用數組初始化器,並將其轉換為List<{anonymous type}>

var list = (new [] {
         new { Value = 0 }
     }).ToList();
Console.WriteLine(list[0].Value);

令人高興的是,您可以輕松地將其添加到列表中,因為具有相同屬性的匿名類型將由編譯器合並為一種類型:

list.Add(new {Value = 1});

根據Servy的評論,避免數組創建的方法將是:

public static List<T> CreateList<T>(params T[] items)
{
     return new List<T>(items);
}

用法:

var list = CreateList(new { Value = 0 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM