Динамически присваивать тип 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
    {

    }
}

Ответы (0 шт):