首页 > 解决方案 > C#获取C#中某类对象的所有属性

问题描述

我有一个有 10 个 IFormFiles 的对象。我想将它们放入 IFormFile 列表中,以便可以轻松操作它。

public class Car{

 public IFormFile Imagem1 {get; set;}
 public IFormFile Imagem2 {get; set;}
......

}



 List<IFormFile> imagens = new List<IFormFile>();

foreach(IFormFile imagem in carro.)
  {
          imagens.add(...);
  }

有没有办法将 IFormFile 传递给列表,或者我必须在 Car 对象中操作使用它们。

我忘了说我正在使用添加它们

图像.add(car.Image1);

但是我的代码越来越乱了。因为我必须检查空值和许多其他事情。如果我可以循环获取 IFormFile,我的生活会轻松得多。

标签: c#

解决方案


这是一个从提供的对象返回指定类型的所有属性的方法:

public static List<TProperty> GetAllPropertyValuesOfType<TProperty>(this object obj)
{
    return obj.GetType()
        .GetProperties()
        .Where(prop => prop.PropertyType == typeof(TProperty))
        .Select(pi => (TProperty)pi.GetValue(obj))
        .ToList();
}

你可以像这样使用它:

Car myCar;
List<IFormFile> imagesOfMyCar = myCar.GetAllPropertyValuesOfType<IFormFile>();

推荐阅读