NaVeN Kumar Ответов: 1

Как сделать не совпадающее значение свойств равным нулю


Всем Привет,

У меня есть класс со 100 свойствами и еще один класс отображения с 20 свойствами,которые будут совпадать с 100 свойствами. Теперь, когда я сопоставляю объект mapping с объектом mapping, я должен получить 100 свойств со значениями 20 свойств, которые были сопоставлены, остальные 80 свойств должны получить null, хотя его значение имеет значение. Как этого добиться, ребята, вы можете мне помочь.

Пожалуйста, дайте мне знать, если я не совсем ясно выразился.

Экс:
1)
new class {
               Property1 = value,
               property2=value,
               property3= value
             }

2) класс отображения:
new class {
             Property1,
               property2
}


Выход должен быть:
{
      Property1 = value,
      property2=value,
      property3= null
}


Что я уже пробовал:

У меня нет никакого лучшего решения. Моя мысль состояла в том, чтобы зациклить свойства и сделать null не совпадающими свойствами. Пожалуйста, предложите мне лучшее решение для этого.

F-ES Sitecore

Вы не показали свой код, так как же мы можем сказать вам, в чем проблема?

NaVeN Kumar

Я не уверен, является ли моя мысль лучшим решением или нет. Я попробую это сделать и опубликую.

CPallini

Я не вижу альтернативы зацикливанию.

Nathan Minier

Инъекция конструктора будет работать.

public MyClassWith100Props (mymappingclass map) { ...//assign }

1 Ответов

Рейтинг:
1

Mehedi Shams

Привет Навен,

Ваша идея циклического перебора свойств должна сработать. Вам нужно добавить пространство имен отражения:

using System.Reflection;
Затем вам нужно получить доступ к свойствам класса 100 значений и соответствующего класса. Для этого вы храните их все в массиве PropertyInfo[] :
PropertyInfo[] PropertiesOf100Class = typeof(ClassHaving100Properties).GetProperties();
PropertyInfo[] PropertiesOfMappingClass = typeof(MappingClass).GetProperties();
Затем вы просматриваете каждое свойство соответствующего класса и смотрите, есть ли совпадение в первичном классе (то есть в классе, имеющем 100 значений).
foreach (var MatchingProperty in PropertiesOfMappingClass)
    foreach (var Property in PropertiesOf100Class)                
        if (MatchingProperty.Name.Equals(Property.Name))
            MessageBox.Show(Property.Name); // Replace this line with whatever you want to do.
Пожалуйста, измените имена классов соответствующим образом.