Mam instancję klasy o nazwie AccessData, która dziedziczy po DbContext. Więc to jest kod pierwszej klasy kontekstu Entity Framework i wygląda tak ...Używając odbicia, wywołaj metodę pola na obiekcie, który już istnieje.
public class AccessData : DbContext
{
public DbSet<apps_Apps> apps_AppsList;
public DbSet<apps_AppsOld> apps_AppsOldList;
...
//Several other DbSet<> properties
}
Korzystanie refleksje, mam zidentyfikować jeden z tych właściwości DbSet na obiekcie AccessData jak to ...
var listField = accessData.GetType().GetField(typeName + "List");
Muszę teraz móc dodawać obiekty do tej właściwości DbSet.
Biorąc pod uwagę, że mam tylko obiekt FieldInfo, który reprezentuje pole DbSet, w jaki sposób wywołać metodę Add tego pola w obiekcie AccessData i przekazać obiekt?
Innymi słowy, jak mogę połączyć się z następującymi?
accessData.<FieldInfoType>.Add(obj);
Mam nadzieję, że to ma sens.
Czyli to działa, ponieważ GetValue zwraca odwołanie do obiektu, do którego odnosi się poleInfo? Zakładam, że od nazwy GetValue właśnie zwrócono wartość, a nie sam obiekt lub coś takiego. –
@MatthewLock - Nie jestem do końca pewny, czy rozumiem, jaką wartość należy się spodziewać. 'GetValue()' zwróci to, co normalnie zostanie zwrócony przez dereferencję pola (np. 'FldVal = obj.ListField;') –
Nie rozumiem, dlaczego możesz wywołać metodę GetType() na zwracanym obiekcie wartości i być w stanie aby uzyskać metodę methodIn na obiekcie, który zwrócił wartość, a następnie osiągnąć instancję obiektu za pomocą Invoke. To wspaniałe, że działa tak, ale wydaje się dziwne. –