Ho un'istanza di una classe denominata AccessData, che eredita da DbContext. Quindi si tratta di un codice di prima classe del contesto Entity Framework e si presenta così ...Utilizzando la riflessione, chiamare un metodo di un campo su un oggetto già esistente
public class AccessData : DbContext
{
public DbSet<apps_Apps> apps_AppsList;
public DbSet<apps_AppsOld> apps_AppsOldList;
...
//Several other DbSet<> properties
}
Utilizzando Riflessioni, ho identificato una di queste proprietà DbSet sull'oggetto AccessData come questo ...
var listField = accessData.GetType().GetField(typeName + "List");
Ora devo essere in grado di aggiungere oggetti a questa proprietà DbSet.
Dato che ho solo un oggetto FieldInfo che rappresenta il campo DbSet, come posso chiamare il metodo Aggiungi di questo campo particolare sull'oggetto AccessData e passare un oggetto?
O in altre parole, come posso chiamare quanto segue?
accessData.<FieldInfoType>.Add(obj);
Spero che questo abbia senso.
Quindi questo funziona perché GetValue restituisce un riferimento all'oggetto a cui fa riferimento fieldInfo? Ho assunto dal nome che GetValue ha appena restituito un valore piuttosto che l'oggetto stesso o qualcosa del genere. –
@MatthewLock - Non sono abbastanza sicuro di capire cosa _value_ ti aspetti di ottenere. 'GetValue()' restituirà tutto ciò che verrebbe normalmente restituito dereferenziando il campo (ad esempio 'fldVal = obj.ListField;') –
Quello che non capisco è il motivo per cui è possibile chiamare GetType() sull'oggetto valore restituito e essere in grado per ottenere un metodoInfo sull'oggetto che ha restituito il valore e quindi raggiungere l'istanza dell'oggetto utilizzando Invoke. È fantastico che funzioni così, ma sembra strano. –