Итак, у меня есть 2 класса, оба имеют одинаковые имена свойств. Один класс содержит разные переменные: int
, strings
, bool
и DateTime
Второй класс содержит только 1 int
, а все остальные являются строками.
Теперь я хочу перебрать все свойства, получить значение из class1, зашифровать эти данные и сохранить их как строку в obj2, а затем вернуть их в основную форму (чтобы позже сохранить их в базе данных).
public PersoonEncrypted EncryptPersonClass(Class1 object1)
{
PersoonEncrypted persEncrypt = new PersoonEncrypted(); //second class obj
Type type = object1.GetType();
PropertyInfo[] properties = type.GetProperties();
Type type2 = persEncrypt.GetType();
PropertyInfo[] properties2 = type.GetProperties();
foreach (var bothProperties in properties.Zip(properties2, (obj1, obj2) => new { Obj1 = obj1, Obj2 = obj2 }))
{
string value = "";
value = bothProperties.Obj1.GetValue(object1) as string;
if (!string.IsNullOrWhiteSpace(value))
{
string encryptValue = Encrypt(value);
if ((bothProperties.Obj2 != null) && (bothProperties.Obj2.PropertyType == typeof(string)))
{ //!= null check has no effect at all
bothProperties.Obj2.SetValue(persEncrypt, encryptValue, null); //errorLine
}
}
}
return persEncrypt;
}
Это то, что я придумал до сих пор. Я, конечно, искал другие решения, подобные этому. Это, после внесения некоторых собственных изменений, не возвращало никаких ошибок, но не сохраняло зашифрованные строки в классе persEncrypt
. Из этого теста я пришел к выводу, что он проверял, было ли значение во втором классе (persEncrypt
в моем примере) из определенного свойства равным нулю, хотя этого делать не следует, он должен создать новый экземпляр этого переменную и сохранить ее в классе объектов, но удаление этой проверки дало мне ту же ошибку.