Динамически присваивать тип C# рефлексия
всем привет. Можно ли используя рефлексию динамически присвоить тип значению и установить его полю объекта? При
typeProperty.SetValue(book, (Тут нужен каст)getValue);
Тут идет распаковка а распаковка идет в тот же тип который и был в классе, obj не может в инт. Можно ли как нибудь это делать динамически? При этом все типы Я уже получаю.
Type? typeField = bookTypes.GetField(item.Name).FieldType;
Вот только этот не получается првести используя
typeProperty.SetValue(book, (typeField )getValue);
Нужна помощь друзья. Ниже весь код
//Get type class
Type bookTypes = typeof(Book);
FieldInfo[] fields = bookTypes.GetFields();
List<TypeOfClass> typesClass = new();
foreach (FieldInfo item in fields)
{
Type? typeField = bookTypes.GetField(item.Name).FieldType;
typesClass.Add(new TypeOfClass(item.Name, typeField, false));
}
PropertyInfo[] propertyInfos = bookTypes.GetProperties();
foreach (PropertyInfo item in propertyInfos)
{
MemberTypes mt = item.MemberType;
Type? typeProperty = bookTypes.GetProperty(item.Name).PropertyType;
typesClass.Add(new TypeOfClass(item.Name, typeProperty, true));
}
Заполнение
Book book = new();
foreach (TypeOfClass item in typesClass)
{
if (item.IsProperty)
{
Type? type = item.TypeValue;
bool f = type is int;//always false
PropertyInfo? typeProperty = bookTypes.GetProperty(item.NameValue);
Type? t = typeProperty.PropertyType;
object? getValue = Convert.ChangeType("111", item.TypeValue);
typeProperty.SetValue(book, (Тут нужен каст иначе ошибка)getValue);
}
else
{
}
}