Я хотел бы знать, как установить свойство в вложенный класс с отражением на переносимой библиотеке классов 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 объектов, так что задайте вопрос:
Как я знаю, обладает ли это свой класс?
Другие примеры: Как узнать, является ли это свойство моим классом?
Спасибо
EDIT:
счета и клиенты являются примерами. Основная идея - использование Generics, теперь типof очевиден.
Я хотел бы использовать отражение для всех случаев.
Спасибо
EDIT 2: добавить больше кода в примере.
Я надеюсь, что это понятно.
спасибо.
Все свойства и классы в вашем примере являются общедоступными и должны быть видимыми и доступными извне. поэтому доступно 'myInvoice.Person.Name'. С точки зрения отражения вы можете получить доступ к типу с помощью свойства PropertyType 'PropertyInfo', то есть' property.Name == «Person» && property.PropertyType == typeof (Customer) ' – Nkosi
Да, это так, но проблема в том, когда я повторяю все свойства. Я не знаю тип динамически. В этом случае Клиент правильный, но если параметр T ... – Jnavero
Да, клиент является примером, но, по-видимому, это не пример вашего желаемого поведения. пожалуйста, предоставьте [mcve], чтобы ответы можно было точно оценить в соответствии с вашими ожиданиями. – Nkosi