Я хочу написать класс с такой же функциональностью, как класс .NET ManagementPath
. На MSDN это набор статей, который обрабатывает формат путей к объектам. Тем не менее, я не понимаю этого пока со всеми частными случаями
Сравнения строк, которые имеют дело с путями объекта, всегда нечувствительны к регистру. ==> это также относится к значениям ключей при запросе экземпляров объекта?
Шестнадцатеричные константы для целых чисел. ==> где они могут возникнуть? только в значениях ключей?
Логические константы для классов с ключами, которые принимают логические значения. ==> Какие константы? правда / ложь? 0/1?
Предполагаемый локальный сервер с частичным путем к пространству имен. Таким образом, указание корневого пространства и пространства имен по умолчанию подразумевает корневое пространство и пространство имен по умолчанию на локальном сервере. ==> означает, что only означает, что если я не укажу сервер, то тогда "." используется в качестве сервера?
Нет пробелов ни внутри элемента, ни между элементами. ==> почему тогда оригинальная реализация .NET допускает пробелы в именах серверов?
Встроенные кавычки в путях к объектам разрешены, но должны разделять кавычки с помощью escape-символов, как в приложении C или C ++. ==> ???
Только десятичные значения распознаются как числовые части клавиш. ==> ???
Все на этой странице: http://msdn.microsoft.com/en-us/library/aa389223(v=VS.85).aspx ==>?
Ну, основные пути, которые я считаю правильными, выглядят как
\\Server\Namespace
\Namespace
\\Server\Namespace:Class
\Namespace:Class
Class
\\Server\Namespace:Class.KeyName=KeyValue
\Namespace:Class.KeyName=KeyValue
Class.KeyName=KeyValue
\\Server\Namespace:Class=KeyValue
\Namespace:Class=KeyValue
Class=KeyValue
\\Server\Namespace:Class.FirstKey=FirstValue,SecondKey=SecondValue
\Namespace:Class.FirstKey=FirstValue,SecondKey=SecondValue
Class.FirstKey=FirstValue,SecondKey=SecondValue
\\Server\Namespace:Class=@
\Namespace:Class=@
Class=@
as well as all combinations were the \\ is replaced by a // and/or the
\ between server and namespace is replaced by /
Я что-нибудь здесь забыл?
Это то, что можно извлечь из MSDN. Однако как могут выглядеть отдельные токены? Вот что я думаю это может быть:
KeyValue = "string" <-- string
1 <-- numeric
0x1 <-- hex
?????????? <-- about the "decimal value" thing and
"embedded quitation mark" thing.
Also, what about whitespaces?
do they have to be abreviated by %20?
KeyName / Class / Server
= string without : or / or \ inside and maybe only [a-z0-9_] ?
Namespace
= string without : or / inside and maybe only [a-z0-9_\]
(.NET implementation also buggy here. accepts forward slashes regardless of
"You cannot use forward slashes within namespace names." on MSDN)
Also, are they allowed to start with \ and end with a : ?
Было бы очень полезно, если бы для каждого токена было дано регулярное выражение того, как оно выглядит.