Как описать свойство класса, чтобы к нему можно было обращаться либо по индексу либо по строковому значению, по аналогии как в delphi в свойстве
ChildNodes интерфейса IXMLNode
Пример Delphi:
- Код: Выделить всё
Var
XMLNode: IXMLNode;
...
begin
...
//обращение по индексу
ShowMessage(XMLNode.ChildNodes[2].NodeName);
//обращение по строковому значению
ShowMessage(XMLNode.ChildNodes['TagName'].NodeName);
// оба варианта работают!
end
В исходниках FPC в описании класса TDOMNodeList описано подобное поле, но оно может быть единственным, то есть к такому полю можно обратится только по индексу, как сделать как в Delphi, чтобы дополнительно можно было обращаться и по строковому значению?
Пример из FPC:
- Код: Выделить всё
protected
function GetItem(index: LongWord): TDOMNode;
...
public
property Item[index: LongWord]: TDOMNode read GetItem; default;
Чтобы было понятнее, можно реализовать следующим образом:
- Код: Выделить всё
protected
function GetItem(Name: WideString): TDOMNode;
...
public
property Item[Name: WideString]: TDOMNode read GetItem; default;
Буду признателен, если кто нибудь, предложит решение или объяснит как реализовать.