我需要刷新所有IQueryable<EntityObject>
类型的属性。
我知道您可以通过以下方式刷新集合:
someObjectContext.Refresh(System.Data.Objects.RefreshMode.StoreWins, someEntityObject);
但是我无法获得所有属性:
//Here i want to get all the propeties
var iQueryablePropertiesList = ViewModel.GetType().GetProperties().Where(x => x.GetType().BaseType is IQueryable<EntityObject>);
//Here i want to loop through all the properties and refresh them
foreach (var item in iQueryablePropertiesList)
{
someObjectContext.Refresh(System.Data.Objects.RefreshMode.StoreWins, item.GetValue(this, null));
}
//Fire PropertyChanged for all properties
OnPropertyChanged(String.Empty);
iQueryablePropertiesList
没有结果。
原因是我需要刷新所有绑定ComboBox的集合。
所以说:
LINQ
查询才能获得所需的结果?答案 0 :(得分:1)
你在网上有错误:
x => x.GetType().BaseType is IQueryable<EntityObject>
BaseType
的类型为Type
,永远不会是IQueryable<EntityObject>
。并且x.GetType()
也会返回一个类型,在这种情况下PropertyInfo
也会返回。
您要输入的内容是:
x => typeof(IQueryable<EntityObject>).IsAssignableForm(x.PropertyType)
这将检查IQueryable<EntityObject>
是否按您的财产类型实施。
public ThisType PropertyName{get;set;}
至于这是否是一种好方法,我不认为这样反思总是一个问题,它会在很晚之后咬你。我只想重新创建模型。