[英]How to use C# reflection to get properties that are instantiated or properties of a class type that are not null
我是反射的新手,我想知道如何过滤私有属性,并且还仅获取实例化的属性。 我想要实现的示例如下。
public class PersonalDetails
{
internal Address AddressDetails { get; set; }
public Contact ContactDetals { get; set; }
public List<PersonalDetails> Friends { get; set; }
public string FirstName { get; set; }
private int TempValue { get; set; }
private int Id { get; set; }
public PersonalDetails()
{
Id = 1;
TempValue = 5;
}
}
public class Address
{
public string MailingAddress { get; set; }
public string ResidentialAddress { get; set; }
}
public class Contact
{
public string CellNumber { get; set; }
public string OfficePhoneNumber { get; set; }
}
PersonalDetails pd = new PersonalDetails();
pd.FirstName = "First Name";
pd.ContactDetals = new Contact();
pd.ContactDetals.CellNumber = "666 666 666";
当我获得对象pd的属性时,我想过滤掉私有的且未实例化的属性,例如TempValue , Id和AddressDetails属性
提前致谢。
也许这个
var p = new PersonalDetails();
var properties = p.GetType()
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.Where(x => x.GetValue(p) != null && !x.GetMethod.IsPrivate && !x.SetMethod.IsPrivate)
.ToList();
其他资源
指定用于控制绑定的标志以及通过反射进行成员和类型搜索的方式。
返回指定对象的属性值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.