.NET의 observables/LINQ를 사용하며 매우 간단한 작업을 수행하려고합니다.관측 가능 부분을 동적으로 연결
WebinarMedias = typesRepository.GetWebinarMedias();
이는 IObservable<IList<Media>>
될 것입니다 : 내 응용 프로그램에서 나는 미디어 객체의 목록을 얻을. 우리는 뷰 모델을 사용하고 있습니다. 뷰를 통해 뷰를 전달합니다 (뷰 모델에서 생성 된 콜드 관측 가능 항목). 괜찮습니다.보기에는 Medias가 필요합니다.
하지만 가끔은 내가 패키지이 : 패키지에서
typesRepository.GetMonthlyFocusPackages() // IObservable<IList<Package>>
를, 내가 매개체를 얻을 수 있습니다 :
packagesRepository.GetPackageMedias(package.Id) // IObservable<IList<Media>>
내가 원하는 무엇 : 뷰 모델에서를 얻을 패키지를 포함하고, 하나의 IObservable<IList<Media>>
변수에 포함 된 모든 미디어 목록으로 축소하고 뷰에 표시 . 더 시각적으로
: 그런
input = [package 1 { media 1, media 2 }, package 2 { media 3 }]
output = [media 1, media 2, media 3]
뭔가 :
var allMedias = typesRepository.GetMonthlyFocusPackages()
.SomeMagicSelect(packages => packages.Select(p => packagesRepository.GetPackageMedias(p.Id)));
내가 foreaches을하고 있는지에 대한 더 많은 고전적인 코드를 사용하지만 관찰 추위를 유지하고 값을 유지하고 싶습니다 수 반응은 끝에서 끝까지.
감사를 당신의 대답,하지만 이것은 관측 가능을 깨뜨리는 것 같습니다. 구독()은 더 이상 효과가 없습니다 (나는 데이터를받지 못합니다). 또한 표현식의 최종 서명은'IList'(medias의 목록에서 관찰 가능하지만 medias의 관찰 가능 항목이 아닌)을 기대하는'Media'입니다. –
@MorganTouvereyQuilling - 먼저 'IObservable'을 요청한 쿼리를 제공했지만 결과를 제공하는 더 좋은 방법은 두 번째 쿼리'IObservable '을 사용하는 것이 좋습니다. 그렇게 원하지 않으면 두 번째 쿼리를 무시하십시오. –
Enigmativity
@MorganTouvereyQuilling - 어떻게 당신의'typesRepository' 객체를 인스턴스화하고 있습니까? 'IDisposable'입니까? 질문에 해당 코드를 표시 할 수 있습니까? – Enigmativity