如何获取非集合属性的属性

Ehs*_*san 2 c# reflection

我有一个Person继承的类EntityBase:

public class Person : EntityBase
{        
   virtual public string FirstName { get; set; }
   virtual public string LastName { get; set; } 
   virtual public IList<Asset> Assets { get; set; }   

}
Run Code Online (Sandbox Code Playgroud)

public class EntityBase : IEntity
{    
   public virtual long Id { get; protected set; }
   public virtual IEnumurable<string> Errors { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要获取Person不是集合的类的属性列表

现在GetProperties()包括:FirstName, LastName, Assets, Id, Errors但我只需要数组属性:FirstName, LastName, Id

如何获取不收集的属性?

Jon*_*eet 7

您可以按属性的返回类型进行筛选.我怀疑你想要过滤掉任何实现的东西IEnumerable,但不是 string(实现IEnumerable<char>,但你想保留).所以类似于:

var properties = type.GetProperties()
       .Where(p => p.PropertyType == typeof(string) ||
                   !typeof(IEnumerable).IsAssignableFrom(p.PropertyType));
Run Code Online (Sandbox Code Playgroud)

  • 你知道,你应该从SO辞职,让人们回答.说真的,至少考虑不是机器人并快速回答这个问题. (3认同)
  • @Ehsan:您想保留字符串 - 但它们是字符的集合,因此会被排除在外。 (2认同)