Злой косяк в EditableArrayList
От: Аноним  
Дата: 10.02.09 12:27
Оценка: 32 (1)
Привет!
Вот на что я напоролся: sender в событии ListChanged вовсе не тот, к кому подписывался, а внутренний BindingListImpl!

Просьба пофиксить .
Re: Злой косяк в EditableArrayList
От: IT Россия linq2db.com
Дата: 11.02.09 19:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вот на что я напоролся: sender в событии ListChanged вовсе не тот, к кому подписывался, а внутренний BindingListImpl!

А>Просьба пофиксить .

Как воспроизвести?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Злой косяк в EditableArrayList
От: Блудов Павел Россия  
Дата: 12.02.09 03:33
Оценка:
Здравствуйте, IT, Вы писали:

IT>Как воспроизвести?

Добавить в файл UnitTests\CS\EditableObjects\EditableArrayListTest.cs в метод TestList_ListChanged выделенную строчку:

private void TestList_ListChanged(object sender, ListChangedEventArgs e)
{
    Assert.That(sender, Is.InstanceOfType(typeof(EditableArrayList)));

    if (e.ListChangedType != ListChangedType.ItemDeleted && e.ListChangedType != ListChangedType.Reset)
        Console.WriteLine("ListChanged (ID:{3}). Type: {0}, OldIndex: {1}, NewIndex: {2}", e.ListChangedType, e.OldIndex, e.NewIndex, (e.NewIndex >= 0 && e.NewIndex < _testList.Count) ? ((EditableTestObject)_testList[e.NewIndex]).ID : -1);
    else
        Console.WriteLine("ListChanged (ID:???). Type: {0}, OldIndex: {1}, NewIndex: {2}", e.ListChangedType, e.OldIndex, e.NewIndex);
}


Понятно, что там будет BindingListImpl, т.к. событие ListChanged тупо ему делегируется:

public event ListChangedEventHandler ListChanged
{
    add    { BindingListImpl.ListChanged += value; }
    remove { BindingListImpl.ListChanged -= value; }
}


Как это исправить втупую понятно. А вот как исправить правильно .
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Re[3]: fixed due to 714 revision
От: ili Россия  
Дата: 28.03.09 07:01
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Как это исправить втупую понятно. А вот как исправить правильно .


втупую это или нет, я , но терь ЕдитаблАррэй слушает события БиндингЛистИмпл и райзит свои, укакзывая себя в качестве сендера
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.