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..
}
}
}
}
Iは、文字列プロパティを有し、私は(例えば)GetRuntimePropertiesを(使用する場合)は、この機能を約8つのプロパティが返されますので、質問は
私のクラスのプロパティを知っていますか?
その他の例: プロパティが自分のクラスであるかどうかをどのように知ることができますか?
請求書と顧客である例:
はEDITありがとうございます。主な考え方はGenericsを使用することです。タイプが明らかになりました。
すべてのケースで反射を使用したいと思います。私は例の多くのコードを追加し :
はEDIT 2ありがとうございます。
私はそれが自分自身であることを希望します。
ありがとうございます。
あなたの例のすべてのプロパティとクラスは公開されており、外部から見えてアクセス可能である必要があります。 'myInvoice.Person.Name'にアクセスできます。反射の観点から、 'PropertyInfo'の' PropertyType'プロパティ、すなわち 'property.Name ==" Person "&& property.PropertyType == typeof(Customer)' – Nkosi
を介してタイプにアクセスできます。私はすべてのプロパティを繰り返します。私はタイプを動的に知っていません。この場合、顧客は正しいですが、パラメータがTの場合... – Jnavero
はい、顧客は例ですが、明らかに希望の動作の例ではありません。あなたの期待に正確に合った回答を提供できるように[mcve]を提供してください。 – Nkosi