Почему myList (i) не передает througp свойство Item в унаследованном классе BindingList (of T) - PullRequest
0 голосов
/ 05 апреля 2011

Я создал класс, который наследуется от BindingList(of T), и я добавил свойство Item(indx as Integer), который затемняет элемент базового свойства следующим образом

<System.Reflection.DefaultMember("Item")> _
Public Class Unity(Of T As {New, Entity})
    Inherits BindingList(Of T)
    Implements IUnity

    Public Property Item(ByVal indx As Integer) As T
        Get
            If indx >= Me.Count Then
                Throw New ArgumentOutOfRangeException("index")
            End If
            If Not MyBase.Item(indx)._IsLoaded Then InitDataOfItemsInPage(indx)
            Return MyBase.Item(indx)
        End Get
        Set(ByVal value As T)
            MyBase.Item(indx) = value
        End Set
    End Property

    ......
End Class

Теперь, когда я пытаюсь получить доступ к элементу, пишу myUnity.Item(1) все работает нормально. Код переходит к свойству Item, делает то, что должен, и возвращает myEntity. Но если я напишу myUnity(1), я получу myEntity без прохождения элемента свойства Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 05 апреля 2011

Похоже, что "элемент свойства по умолчанию" из BindingList (из T) имеет приоритет перед DefaultMemberAttribute в классе Unity (...).Я не знаю почему.

Default Property Item(ByVal indx As Integer) As T вместо <DefaultMember>(...) отлично работает.

...