Xamarin 휴대용 클래스 라이브러리에서 중첩 된 클래스로 속성을 설정하는 방법을 알고 싶습니다.C# 휴대용 클래스 라이브러리 및 중첩 된 속성의 반영
저는 Xamarin 휴대용 클래스 라이브러리에서 리플렉션을 사용하여 프로젝트 작업을하고 있습니다. 내가 문자열 속성이있는 경우
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를 사용 :이 기능이
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;}
}
반면에 :
이 코드를 약 8 개의 속성을 반환하므로 질문은 다음과 같습니다.
속성이 내 수업인지 어떻게 알 수 있습니까?
다른 예 : 클래스가 내 클래스인지 여부를 어떻게 알 수 있습니까?
송장과 고객은 예 :
는편집 주셔서 감사합니다. 주요 아이디어는 Generics를 사용하는 것입니다. 이제 typeof가 분명합니다.
모든 경우 리플렉션을 사용하고 싶습니다. 내가 예에서 더 많은 코드를 추가 :
는편집 2 주셔서 감사합니다.
나 자신이 분명하기를 바랍니다.
감사합니다.
예제의 모든 속성 및 클래스는 공개되어 있으며 외부에서 볼 수 있고 액세스 할 수 있어야합니다. 그래서'myInvoice.Person.Name'이 접근 가능합니다. 반사 관점에서 'PropertyInfo'의 'PropertyType'속성, 즉 'property.Name == "Person"&& property.PropertyType == typeof (Customer)를 통해 유형에 액세스 할 수 있습니다.' – Nkosi
예, 그렇습니다. 모든 속성을 반복 할 때. 나는 타입을 동적으로 안다. 이 경우 고객은 정확하지만 매개 변수가 T ... – Jnavero
예 고객이 예이지만 분명히 원하는 동작의 예가 아닙니다. 기대에 정확히 일치하는 답변을 제공 할 수 있도록 [mcve]를 제공해주십시오. – Nkosi