[英]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.