2016-10-27 2 views
-1

Возможно, довольно простой вопрос, но у меня есть инициализированный объект класса, который передается через параметр другому классу. Затем объект класса считывается, чтобы проверить значения его членов и, возможно, изменить их, если они неверны.Итерация по всем свойствам класса

Я могу получить доступ к отдельным свойствам и изменить их значения, но то, что я хочу сделать, - это перебрать все свойства целочисленного типа, чтобы проверить их базовое значение и изменить его там, где это необходимо.

Вот пример структуры объекта:

+ Prices 
++ MainPrices 
+++ RelevantPrices 
++++ (Int) Price 

+ SubPrices 
++ MainPrices 
+++ RelevantPrices 
++++ (Int) Price 

+Rooms 
++ Data 
+++ (String) Name 
+++ (Int) NameType 
+++ (String) Location 
+++ (Int) RoomNumber 

Что мне нужно сделать, это получить здесь Rooms.Data и цикл по всем своим параметрам типа Int. Я попытался использовать отражение, но для этого мне нужна новая ссылка на экземпляр для типа, все, что у меня есть, это инициализированный объект класса.

Может ли кто-нибудь посоветовать, что может быть лучшим способом перебрать и условно изменить их существующие значения, пожалуйста?

EDIT:

Heres пример кода:

public class Test() 
{ 

public Void Init(MyClassObject Data) 
{ 

//Data is initialised with data, it has the structure explained in the original description 

//What i need to do is loop over the initialised objects properties here in this Init method, 
} 

} 
+1

Что вы имеете в виду под «я потребовать новую ссылку экземпляра для тип «? – Amy

+1

Непонятно, что вы подразумеваете под« ссылкой на новый экземпляр »и« инициализированным объектом класса ». [mcve] действительно поможет ... –

+1

« но для этого я требуется новая ссылка на экземпляр для типа «Нет, вам не нужна новая ссылка. Используйте ссылку, которую у вас уже есть, ту, которая имеет «существующие значения». – Quantic

ответ

0

Это даст вам список целочисленных свойств

var integers = this.GetType().GetProperties().Where(p => p.PropertyType == typeof(int)).ToList(); 
Смежные вопросы