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 с одинаковой сигнатурой).
Здравствуйте, 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
Спасибо, так всё работает