Как установить Vaues для вложенного свойства с помощью C # Reflection.?

Я пытаюсь установить значение для вложенного свойства класса динамически с помощью отражения. Может ли кто-нибудь помочь мне сделать это.

У меня классRegion как ниже.

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

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

У меня есть читатель данных Oracle для предоставления значений из курсора Ref.

что даст мне как

Id, имя, COUNTRY_ID, COUNTRY_NAME

Я мог бы присвоить значения Region.Id, Region.Name ниже.

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

А для Вложенного свойства я мог сделать присваивание значений, как показано ниже, создав Экземпляр, прочитав Имя поля.

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);
}

Вышеуказанное присваивает значения.Country.Id

Но так как я создаю экземпляр каждый раз, я не мог получить предыдущийCountry.Id значение, если я иду на Next Country.Name.

Кто-нибудь может сказать, мог бы присвоить значенияobjItem(that is Region).Country.Id а такжеobjItem.Country.Name, Это означает, как назначать значения для вложенных свойств вместо создания экземпляра и назначения каждый раз.

Заранее спасибо.!

Ответы на вопрос(2)

Ваш ответ на вопрос