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