Silverlight 3 класс библиотеки - PullRequest
       16

Silverlight 3 класс библиотеки

3 голосов
/ 19 февраля 2009

В настоящее время я работаю над проектом разработки пользовательского интерфейса, и было решено реализовать его в Silvelight. Я понимаю, что разработчики Microsoft пытаются минимизировать размер дистрибутива, и поэтому некоторые (многие) классы в обычном .NET Framework не включены. Ожидается ли увидеть больше классов, включенных в библиотеку Silverlight 3?

Ответы [ 4 ]

6 голосов
/ 19 февраля 2009

Кроме того, вы всегда можете использовать 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, так что я не думаю, что это вызовет какие-либо юридические проблемы.

Конечно, вы могли бы заново реализовать логику синтаксического анализа строки запроса, но, как вы можете видеть, здесь есть все мелкие детали, которые вы могли бы упустить, не говоря уже о проблемах производительности.

3 голосов
/ 19 февраля 2009

Я надеюсь, что нет, и я сомневаюсь в этом.

Скотт Гатри, который, по-видимому, руководит проектом для Microsoft, официально заявляет, что он не хочет вносить "хорошо иметь" в случае, если нет места для будущих "обязательных вещей".

Я думаю, что у них есть правильный баланс - они оставили немногое, что вы не можете написать сами.

1 голос
/ 19 февраля 2009

Silverlight 3 без сомнения будет расти в размерах. Silverlight 3 будет ориентирован на мобильные устройства, поэтому нет сомнений, что пакет останется небольшим. Тем не менее, люди просят много новых функций: печать, добавления WCF, 3D, поддержка микрофонов, аппаратное ускорение ... без сомнения, он будет расти. Вопрос только в том, интегрируют ли они это в ядро, или ваш XAP-файл должен стать намного больше.

0 голосов
/ 19 февраля 2009

.NET Framework содержит кучу вещей, которые практически бесполезны в изолированной среде, такой как Silverlight.

Я бы не ожидал увидеть гораздо больше стандартной платформы .NET, включенной в Core CLR, однако в Silverlight3 из WPF будет много материала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...