Próbuję ustawić wartość zagnieżdżonej właściwości klasy dynamicznie za pomocą odbicia. Czy ktoś mógłby mi w tym pomóc?Jak ustawić Vaues do zagnieżdżonej własności za pomocą C# Reflection.?
Mam klasę Region
jak poniżej.
public class Region
{
public int id;
public string name;
public Country CountryInfo;
}
public class Country
{
public int id;
public string name;
}
Mam czytnik danych Oracle do podawania wartości z kursora Ref.
który da mi jak
Id, nazwa, Country_id, COUNTRY_NAME
mogłem w stanie przypisać wartości do Region.Id, Region.Name przez poniżej.
FieldName="id"
prop = objItem.GetType().GetProperty(FieldName, BindingFlags.Public | BindingFlags.Instance);
prop.SetValue(objItem, Utility.ToLong(reader_new[ResultName]), null);
I dla Zagnieżdżonej Właściwości mogłem wykonać przypisane wartości do poniższych, tworząc instancję, odczytując nazwę pola.
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);
}
Powyższe wartości należy przypisać do Country.Id
.
Ale od czasu tworzenia instancji za każdym razem nie mogłem uzyskać poprzedniej wartości Country.Id
, jeśli wybiorę opcję Następny kraj.Nazwa.
Czy ktokolwiek mógłby powiedzieć, że może przypisać wartości do objItem(that is Region).Country.Id
i objItem.Country.Name
. Co oznacza przypisywanie wartości do Zagnieżdżonych Właściwości zamiast tworzenia instancji i przypisywania za każdym razem.
Z góry dziękuję.!
Możliwy duplikat http://stackoverflow.com/questions/1954746/using-reflection -in-c-sharp-to-get-własności-zagnieżdżonego obiektu –