如何使用反射将对象添加到现有列表

How to add an object to an existing list using reflection

使用 EntityFrameworkCore 连接到数据库,在创建所有表的模型和一个 DbContext 之后,我创建了一个名为 myContext 的上下文的新对象,它有一个类型为 属性(名称为 listName)列表。 我想创建一个新对象并将其添加到列表中。 一切正常,但最后一行代码:

myList.GetType().GetMethod("Add").Invoke(myList, new[] {myObj});

抛出类型为System.Reflection.TargetInvocationException

的异常

完整代码如下:

private void AddNewObjectToThisList(string listName) {
var myList = myContext.GetType().GetProperty(listName).GetValue(myContext);
var objType = myList.GetType().GetGeneric Arguments().Single();
var myObj = Activator.CreateInstance(objType);
myList.GetType().GetMethod("Add").Invoke(myList, new[] {myObj});
}

我想确定代码是否正确。它是。 问题是将新记录插入 table (myList)。 myList 应该有一个主键。分配密钥后问题就解决了。