System.ArgumentException: невозможно найти индекс исходного элемента. Либо его нет в списке, либо хэш-код мутировалC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.ArgumentException: невозможно найти индекс исходного элемента. Либо его нет в списке, либо хэш-код мутировал

Сообщение Anonymous »

Я использую DynamicData в своем приложении MAUI. Я получаю следующее исключение при обновлении элементов SourceCache. Кто-нибудь знает, почему возникает это исключение? Я использую функции GroupBy и TransformMany.

Код: Выделить всё

mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: Cannot find index of original item.  Either it does not exist in the list or the hashcode has mutated
[mono-rt]    at DynamicData.ListEx.Replace[PlaceItem](IList`1 source, PlaceItem original, PlaceItem replaceWith) in /_/src/DynamicData/List/ListEx.cs:line 378
[mono-rt]    at DynamicData.Binding.ObservableCollectionAdaptor`2[[Iratrips.Itineraries.ItemViewModels.PlaceItem, Iratrips.Maui, Version=3.5.702.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].DoUpdate(IChangeSet`2 changes, IObservableCollection`1 list) in /_/src/DynamicData/Binding/ObservableCollectionAdaptor.cs:line 154
[mono-rt]    at DynamicData.Binding.ObservableCollectionAdaptor`2[[Iratrips.Itineraries.ItemViewModels.PlaceItem, Iratrips.Maui, Version=3.5.702.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Adapt(IChangeSet`2 changes, IObservableCollection`1 collection) in /_/src/DynamicData/Binding/ObservableCollectionAdaptor.cs:line 130
[mono-rt]    at DynamicData.ObservableCacheEx.c__DisplayClass28_0`2[[Iratrips.Itineraries.ItemViewModels.PlaceItem, Iratrips.Maui, Version=3.5.702.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__1(IChangeSet`2 changes) in /_/src/DynamicData/Cache/ObservableCacheEx.cs:line 582
[mono-rt]    at System.Reactive.Linq.ObservableImpl.Select`2.Selector._[[DynamicData.IChangeSet`2[[Iratrips.Itineraries.ItemViewModels.PlaceItem, Iratrips.Maui, Version=3.5.702.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], DynamicData, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null],[DynamicData.IChangeSet`2[[Iratrips.Itineraries.ItemViewModels.PlaceItem, Iratrips.Maui, Version=3.5.702.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], DynamicData, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null]].OnNext(IChangeSet`2 value)
[mono-rt] --- End of stack trace from previous location ---
[mono-rt]    at System.Reactive.PlatformServices.ExceptionServicesImpl.Rethrow(Exception exception)
[mono-rt]    at System.Reactive.ExceptionHelpers.Throw(Exception exception)
[mono-rt]    at System.Reactive.Stubs.c.b__2_1(Exception ex)
[mono-rt]    at System.Reactive.AnonymousObserver`1[[DynamicData.IChangeSet`2[[Iratrips.Itineraries.ItemViewModels.PlaceItem, Iratrips.Maui, Version=3.5.702.0, Culture=neutral, PublicKeyToken=null],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], DynamicData, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null]].OnErrorCore(Exception error)

Код: Выделить всё

public class Sample
{
public void Configure()
{
var connection = _placeCache.Connect();

//Places
var PlacesObservable = connection
.Sort(SortExpressionComparer.Ascending(k => k.Sequence))
.Filter(k =>
{
//Few conditions here
return true;
})
.TransformAsync(async (place) =>
{
//Some code here which creates PlaceItem using async.
return (BasePlaceItem)item;
})
.Group(k => k.Date.Date)
.TransformMany(k =>
{
//Date Header

//ID
PlaceItem item = new PlaceDateItem(k.Key, GuidUtil.GenerateGuid(k.Key.ToString(CultureInfo.InvariantCulture)), this);
var obs = new ObservableCollection() { item };
var osbSet = obs.ToObservableChangeSet(m =>  m.Id);

//Gaps
var gapObservable = k.Cache
.Connect()
.Transform(m =>
{
var item = ((PlaceItem)m);
//ID
var id = GuidUtil.GenerateGuid(item.PlaceId + "nxt");
var gap = new PlaceGapItem(id, this);
return (PlaceItem)gap;

//I think error comes here in this observable.

}, transformOnRefresh: true);

var groupObservable = k.Cache
.Connect();

var disposable = groupObservable
.Merge(osbSet)
.Merge(gapObservable)
.Bind(out var items)
.Subscribe();

Disposables.Add(disposable);

return items;

}, x => x.Id)
.Merge(footerbSet)
.Sort(SortExpressionComparer.Ascending(item => item.Date));

var disposable = PlacesObservable
.ObserveOn(MainThread.AppContext)
.Bind(PlaceItems)
.Subscribe();
}
}

Код: Выделить всё

_placeCache
обновляется в фоновом режиме при изменении местоположения пользователя. Если я закомментирую наблюдаемый пробел, код будет работать.


Подробнее здесь: https://stackoverflow.com/questions/791 ... t-does-not
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»