使用反射,调用已存在对象上的 Field 方法
我有一个名为 AccessData 的类的实例,它继承自 DbContext。所以它是一个实体框架代码优先上下文类,看起来像这样...
public class AccessData : DbContext
{
public DbSet<apps_Apps> apps_AppsList;
public DbSet<apps_AppsOld> apps_AppsOldList;
...
//Several other DbSet<> properties
}
使用反射,我已经在 AccessData 对象上识别了其中一个 DbSet 属性,如下所示...
var listField = accessData.GetType().GetField(typeName + "List");
我现在需要能够将对象添加到此 DbSet 属性。
鉴于我只有一个代表 DbSet 字段的 FieldInfo 对象,如何在 AccessData 对象上调用此特定 Field 的 Add 方法并传入一个对象?
或者换句话说,我如何调用以下内容?
accessData.<FieldInfoType>.Add(obj);
希望这是有道理的。
I have an instance of a class called AccessData, which inherits from DbContext. So it is an Entity Framework code first context class and looks like this...
public class AccessData : DbContext
{
public DbSet<apps_Apps> apps_AppsList;
public DbSet<apps_AppsOld> apps_AppsOldList;
...
//Several other DbSet<> properties
}
Using Reflections, I have identified one of these DbSet properties on the AccessData object like this...
var listField = accessData.GetType().GetField(typeName + "List");
I now need to be able to add objects to this DbSet property.
Given that I only have a FieldInfo object that represents the DbSet field, how do I call the Add method of this particular Field on the AccessData object and pass in an object?
Or in other words how do I call the following?
accessData.<FieldInfoType>.Add(obj);
Hope this makes sense.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
获取字段的值:
获取要调用的方法的
MethodInfo
:并调用它:
或者,如果您使用的是 .NET 4,则可以使用新的
dynamic< /code> 关键字来简化最后 2 个步骤:
Get the field's value:
Get the
MethodInfo
for the method you want to invoke:And invoke it:
Or if you're using .NET 4, you may be able to use the new
dynamic
keyword to simplify the last 2 steps: