¿Cómo establecer valores en la propiedad anidada utilizando Reflexión de C #?

Estoy tratando de establecer un valor en una propiedad de clase anidada dinámicamente utilizando la reflexión. ¿Podría alguien ayudarme a hacer esto?

Estoy teniendo una claseRegion como abajo.

public class Region
{
    public int id;
    public string name;
    public Country CountryInfo;
}

public class Country
{
    public int id;
    public string name;
}

Tengo un lector de datos de Oracle para proporcionar los valores del cursor de referencia.

que me dara como

Id, nombre, Country_id, Country_name

Pude asignar los valores a Region.Id, Region.Name por debajo.

FieldName="id"
prop = objItem.GetType().GetProperty(FieldName, BindingFlags.Public | BindingFlags.Instance);
prop.SetValue(objItem, Utility.ToLong(reader_new[ResultName]), null);

Y para la propiedad anidada pude hacer los valores asignados a la siguiente manera creando una instancia leyendo el nombre de campo.

FieldName="CountryInfo.id"

if (FieldName.Contains('.'))
{
    Object NestedObject = objItem.GetType().GetProperty(Utility.Trim(FieldName.Split('.')[0]), BindingFlags.Public | BindingFlags.Instance);

    //getting the Type of NestedObject
    Type NestedObjectType = NestedObject.GetType();

    //Creating Instance
    Object Nested = Activator.CreateInstance(typeNew);

    //Getting the nested Property
    PropertyInfo nestedpropinfo = objItem.GetType().GetProperty(Utility.Trim(FieldName.Split('.')[0]), BindingFlags.Public | BindingFlags.Instance);

    PropertyInfo[] nestedpropertyInfoArray = nestedpropinfo.PropertyType.GetProperties();
    prop = nestedpropertyInfoArray.Where(p => p.Name == Utility.Trim(FieldName.Split('.')[1])).SingleOrDefault();

    prop.SetValue(Nested, Utility.ToLong(reader_new[ResultName]), null);
    Nestedprop = objItem.GetType().GetProperty(Utility.Trim(FieldName.Split('.')[0]), BindingFlags.Public | BindingFlags.Instance);

    Nestedprop.SetValue(objItem, Nested, null);
}

Lo anterior asigna valores aCountry.Id.

Pero ya que estoy creando una instancia cada vez que no pude obtener la anteriorCountry.Id valor si voy para el siguiente país. Nombre.

¿Podría alguien decir que podría asignar valores a laobjItem(that is Region).Country.Id yobjItem.Country.Name. Lo que significa cómo asignar valores a las Propiedades anidadas en lugar de crear una instancia y asignar cada vez.

Gracias por adelantado.!

Respuestas a la pregunta(2)

Su respuesta a la pregunta