【发布时间】:2019-06-11 03:10:04
【问题描述】:
我是反射新手,我想知道如何过滤掉私有属性并且只获取实例化的属性。下面给出了我想要实现的示例。
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 和 详细地址
提前致谢。
【问题讨论】:
-
TempValue总是被实例化,它是一个值类型,你的意思是所有没有设置为default的地方(对于int即0) .还有你的反射代码在哪里? -
是的,私有属性可以被实例化,但由于它们是私有的,我想避免它们。
-
我基本上想要非私有和实例化的属性,包括值类型
标签: c# .net reflection .net-core system.reflection