1

我想删除两个动态实体之间的多对多关系。

我见过使用虚拟对象的示例,但它们不是动态的。直到运行时,我才会知道对象或对象集合导航属性的名称。所以我不能说,

apple.Oranges.Remove(orange)

我需要动态地做。就像是,

dynamicModel.dynamicCollection(collectionName).Remove(otherDynamicModel)

我不一定需要扩展方法,只需要完成工作的东西。我怎样才能做到这一点?谢谢。

(由于对象是动态的,我不知道提供哪些其他细节可能会有所帮助?)

4

1 回答 1

1

我认为在这种情况下你最好还是使用反射:

((dynamic)dynamicModel.GetType().GetProperty(collectionName)
   .GetValue(dynamicModel, null))
       .Remove(otherDynamicModel)

或者如果你知道这将是一个IList

((IList)dynamicModel.GetType().GetProperty(collectionName)
   .GetValue(dynamicModel, null))
       .Remove(otherDynamicModel)
于 2011-08-30T16:36:50.357 回答