Как перевести на VB такое имя функции?
От: objMihail Россия  
Дата: 18.11.10 13:37
Оценка:
bool IList.IsReadOnly
{
    get
    {
        return false;
    }
}


Это метод из класса public class List<T>, взято из рефлектора, реализует свойство IsReadOnly интерфейса IList. Сам же рефлектор переводит на VB как:
Private ReadOnly Property System.Collections.IList.IsReadOnly As Boolean
    Get
        Return False
    End Get
End Property


На что компилятор подчеркивает имя свойства и пишет "Требуется завершение оператора", т.е. точки в именах компилятор не понимает как надо.

Не работает и так:
Private ReadOnly Property IList.IsReadOnly As Boolean
    Get
        Return False
    End Get
End Property


Если записать так:
    Private ReadOnly Property IsReadOnly() As Boolean Implements IList.IsReadOnly
        Get
            Return False
        End Get
    End Property

то ошибка пропадает, но тогда если в классе существует ещё одно свойство IsReadOnly, реализующая например другой интерфейс, то происходит конфликт имен. А при первом способе его судя по всему быть не должно (например, в коде List<T> прекрасно уживаются несколько свойств Item с одинаковой сигнатурой).
Re: Как перевести на VB такое имя функции?
От: hardcase Пират http://nemerle.org
Дата: 18.11.10 14:46
Оценка: 3 (1) +1
Здравствуйте, objMihail, Вы писали:

M>то ошибка пропадает, но тогда если в классе существует ещё одно свойство IsReadOnly, реализующая например другой интерфейс, то происходит конфликт имен. А при первом способе его судя по всему быть не должно (например, в коде List<T> прекрасно уживаются несколько свойств Item с одинаковой сигнатурой).


Дайте таким свойствам уникальные имена:

Interface I1

    ReadOnly Property P As Boolean

End Interface

Interface I2

    ReadOnly Property P As Boolean

End Interface


Class X
    Implements I1
    Implements I2

    Private ReadOnly Property P_I1 As Boolean Implements I1.P
        Get
            Return True
        End Get
    End Property

    Private ReadOnly Property P_I2 As Boolean Implements I2.P
        Get
            Return True
        End Get
    End Property

End Class
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Как перевести на VB такое имя функции?
От: objMihail Россия  
Дата: 18.11.10 17:43
Оценка:
Спасибо, так всё работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.