0

すべての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にバインドされているすべてのコレクションを更新する必要があるためです。

つまり、次のように言われています。

  1. これは、ViewModelのすべてのコレクションを更新する正しい方法ですか?
  2. そうでない場合、どのように問題に取り組む必要がありますか?
  3. LINQそうである場合、希望する結果を得るには、クエリを追加するために何が必要ですか?
4

1 に答える 1

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;} 

これが良い方法であるかどうかについては、私はそうは思わないので、反射は常に問題であり、後ですぐにあなたを噛むでしょう。モデルを再作成するだけです。

于 2013-01-11T11:24:34.173 に答える