簡體   English   中英

如何將 Object 作為通用 function 參數傳遞?

[英]How to pass Object as a generic function parameter?

我需要編寫一個 function,它將 Object 作為參數,遍歷其屬性並將其全部寫入控制台。 這是一個例子:

設備.cs

    public class Equipment
    {
        public string SerialNo { get; set; }
        public string ModelName { get; set; }
    }

人物.cs

    public class People
    {
        public string Name { get; set; }
        public string Age{ get; set; }
    }

這是我從 API 返回到上述模型的示例:

   var equipment_res = responseObject?.items?.Select(s => new Equipment
       {
          SerialNo = s.serial_number,
          ModelName = s.model.name,
       });

   var people_res = responseObject?.items?.Select(s => new Equipment
       {
          SerialNo = s.serial_number,
          ModelName = s.model.name,
       });

現在我正在努力編寫一個 function,它可以接受任何 object 並將其屬性寫入控制台。 在這種情況下,我不知道如何正確地將對象傳遞給 function:

        public void WriteProps(Object obj1, Object obj2)
        {
                foreach (Object obj1 in obj2)
                {
                    Object obj1 = new Object();

                    foreach (PropertyInfo p in obj1)
                    {
                        Console.WriteLine(p.Name);
                        Console.WriteLine(p.GetValue(obj1, null));
                    }
                }
        }

Function 撥打:

WriteProps(Equipment, equipment_res)

編輯:下面有一個工作示例,但是當我明確傳遞名為 object 時。它工作正常,但現在我想讓這個 function 更通用:

   foreach (Equipment item in equipment)
   {
         Equipment eq = new Equipment();
         eq = item;

         foreach (PropertyInfo p in eq)
         {
             Console.WriteLine(p.Name);
             Console.WriteLine(p.GetValue(eq, null));
         }
   }

使您的方法通用,然后使用反射( System.Reflection ):

void WriteProps<T>(T obj)
{
    foreach (var prop in typeof(T).GetProperties())
    {
        Console.WriteLine(prop.Name);
        Console.WriteLine(prop.GetValue(obj));
    }
}

利用:

WriteProps(new People
{
    Name = "Test",
    Age = "11"
});
WriteProps(new Equipment
{
    ModelName = "test",
    SerialNo = "test"
});

更新:

我將添加此方法以處理 IEnumerable 對象:

void WritePropsList<T>(IEnumerable<T> objects)
{
    foreach (var obj in objects)
    {
        WriteProps(obj);
    }
}

暫無
暫無

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

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