如何使用反射将对象添加到现有列表
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 应该有一个主键。分配密钥后问题就解决了。
使用 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 应该有一个主键。分配密钥后问题就解决了。