我想删除两个动态实体之间的多对多关系。
我见过使用虚拟对象的例子,但它们不是动态的。在运行时之前,我不会知道对象的集合导航属性的对象或名称。所以我不能只说,
apple.Oranges.Remove(orange)
我需要动态地做。像,
dynamicModel.dynamicCollection(collectionName).Remove(otherDynamicModel)
我不一定需要扩展方法,只需要完成工作。我怎样才能做到这一点?感谢。
(由于对象是动态的,我不知道其他哪些细节可能有用?)
答案 0 :(得分:1)
我认为你最好在这种情况下使用反射:
((dynamic)dynamicModel.GetType().GetProperty(collectionName)
.GetValue(dynamicModel, null))
.Remove(otherDynamicModel)
或者,如果您知道它将是IList
((IList)dynamicModel.GetType().GetProperty(collectionName)
.GetValue(dynamicModel, null))
.Remove(otherDynamicModel)