Я пытаюсь использовать PropertyInfo.SetValue () для свойства.
Я получил значение из того же свойства с помощью PropertyInfo.GetValue ()
Свойство имеет тип MyObject .
Когда я пытаюсь использоватьSetValue Я получаю исключение: «Объект не соответствует типу цели.».Причина в том, что значение, которое я получил через GetValue (), имеет тип времени выполнения MyObjectProxy , который наследуется от MyObject .
Я не могу назначить объект типа MyObjectProxy to MyObject Свойство и не нашел способ сделать это.
Но EF Core сделал это как-то, так разве я не смогу это сделать?
//Each object that implements IProfileKey is an entity with a foreign key of myObject
List<PropertyInfo> myProperties = GetPropertiesOfType(typeof(IProfileKey));
//Get values from all properties as IProfileKey
List<IProfileKey> myValues = myProperties.Select(x => (IProfileKey)x.GetValue(myObject)).ToList();
myProperty.GetValue(myObject);
MyContext.Remove(ofObject);
MyContext.SaveChanges();
UpdatePrimaryKeys(myValues);
foreach(int i = 0; i < myProperties.Count; i++)
{
//Heres the problem
//myProperties[i] is of type MyObject, while myValues[i] is of type MyObjectProxy
myProperties[i].SetValue(myObject, myValues[i]);
}
MyContext.Add(myObject);
MyContext.SaveChanges();
Фон в том, что я пытаюсь изменить первичный ключ одного из моих объектов в EF Core.Для этого мне нужно удалить объект, который я пытаюсь изменить, затем изменить ключ и добавить его снова.
Теперь у этого объекта также есть другие объекты, ссылающиеся на него, поэтому мне нужно также изменить их ключи.Все эти другие объекты являются свойствами типа IProfileKey в моем главном объекте.
Поэтому моя идея заключалась в том, чтобы использовать обобщенные элементы для автоматического поиска и обновления этих свойств.