我想知道如何使用Xamarin可移植類庫中的反射將屬性設置爲嵌套類。C#可移植類庫和嵌套屬性的反射
我正在使用Xamarin便攜式類庫的反射工作。
我有這樣的代碼:
public class Customer
{
public string Name { get; set; }
public string FirstName { get; set; }
public int Id { get; set; }
}
public class Invoice
{
public string Description { get; set; }
public int Id { get; set; }
public Customer Person { get; set; }
//New Edit...
//Clases...
// ... More classes
public OtherClass N-1 {get; set}
public MoreClases N {get;set;}
}
在另一方面我有這樣的功能:
public void TestCode()
{
var myCustomer = new Customer()
{
FirstName = "qwerty",
Name = "asdfgh",
Id = 1
};
var myInvoice = new Invoice()
{
Description = "chocos",
Id = 1,
Person = myCustomer,
};
var properties = myInvoice.GetType().GetRuntimeProperties();
foreach (var property in properties)
{
var value = property.GetValue(myInvoice);
if (value != null)
{
if (property.PropertyType.IsGenericParameter)
{
//Have Generic parameters
}
else
{
//How I Know if my class == person???
// EDIT:
// If I Use typeof I must check all clases..
}
}
}
}
當我有字符串屬性和我使用(例如)GetRuntimeProperties()該函數返回大約8個屬性,所以問題是:
我怎麼知道屬性它是我的課程?
其他示例: 如何知道屬性是否是我的類?
謝謝
編輯:
發票,客戶就是例子。主要想法是使用泛型現在的類型是顯而易見的。
我想對所有情況使用反射。
謝謝
編輯2: 我的例子中添加更多的代碼。
我希望自己清楚。
謝謝。
示例中的所有屬性和類都是公共的,並且應該可見且可從外部訪問。所以可以訪問myInvoice.Person.Name。從反射的角度來看,你可以通過PropertyInfo的'PropertyType'屬性來訪問類型,即'property.Name =='Person'&& property.PropertyType == typeof(Customer)' – Nkosi
是的,但是問題是當我迭代所有的屬性。我不知道動態類型。在這種情況下,客戶是正確的,但如果參數是T ... – Jnavero
是客戶是一個示例,但顯然它不是您想要的行爲的示例。請提供[mcve],以便能夠提供準確符合您的期望的答案。 – Nkosi