Кроме того, вы всегда можете использовать Reflector поверх основных библиотек .NET Framework, чтобы получить некоторые из недостающих «приятных имущих» в виде кода.
Вот отражатель Redgate: http://www.red -gate.com / products / отражатель /
А вот код, который я извлек и измененная версия HttpUtility.ParseQueryString :
public IDictionary<string, string> ParseParams(string paramsString)
{
if (string.IsNullOrEmpty(paramsString))
throw new ArgumentNullException("paramsString");
// convert to dictionary
var dict = new Dictionary<string, string>();
// remove the leading ?
if (paramsString.StartsWith("?"))
paramsString = paramsString.Substring(1);
var length = paramsString.Length;
for (var i = 0; i < length; i++) {
var startIndex = i;
var pivotIndex = -1;
while (i < length) {
char ch = paramsString[i];
if (ch == '=') {
if (pivotIndex < 0) {
pivotIndex = i;
}
} else if (ch == '&') {
break;
}
i++;
}
string name;
string value;
if (pivotIndex >= 0) {
name = paramsString.Substring(startIndex, pivotIndex - startIndex);
value = paramsString.Substring(pivotIndex + 1, (i - pivotIndex) - 1);
} else {
name = paramsString.Substring(startIndex, i - startIndex);
value = null;
}
dict.Add(UrlDecode(name), UrlDecode(value));
// if string ends with ampersand, add another empty token
if ((i == (length - 1)) && (paramsString[i] == '&'))
dict.Add(null, string.Empty);
}
return dict;
}
Это всего лишь пример, но, как вы можете видеть, ... если то, что вам действительно нужно, уже находится внутри .NET BCL ... тогда зачем его повторно внедрять? Просто декомпилируйте объект и заново внедрите его в Silverlight.
IMO, большинство из того, что вы будете декомпилировать, вероятно, будут простыми ванильными вещами, "хорошо иметь", которые в любом случае отсутствуют в Silverlight, так что я не думаю, что это вызовет какие-либо юридические проблемы.
Конечно, вы могли бы заново реализовать логику синтаксического анализа строки запроса, но, как вы можете видеть, здесь есть все мелкие детали, которые вы могли бы упустить, не говоря уже о проблемах производительности.