Silverlight 3类库

时间:2009-02-19 03:49:26

标签: silverlight

我目前正在开发一个UI开发项目,并决定在Silvelight中实现它。我了解Microsoft开发人员尝试最小化分发的大小,这就是为什么不包括常规.NET Framework中的一些(很多)类的原因。是否可以看到Silverlight 3库中包含更多类?

4 个答案:

答案 0 :(得分:6)

顺便说一句,您总是可以在核心.NET Framework库上使用Reflector来获取代码形式中缺少的“好东西”。

这是redgate的反射器:http://www.red-gate.com/products/reflector/

以下是我提取的代码和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你反编译的大部分内容可能都是基本的vanilla东西,“很高兴有钱”,无论如何都缺少Silverlight,所以我认为这不会引起任何法律问题。

当然,您可以自己重新实现查询字符串解析逻辑,但正如您所看到的那样,您可能错过了所有细节,而不是提及性能问题。

答案 1 :(得分:3)

我希望不是,我怀疑它。

斯科特·格思里(Scott Guthrie)显然是为微软负责该项目,他表示,如果没有任何空间留给任何未来“必须拥有”的话,他不想把“好有钱”放进去。

我认为他们已经取得了平衡 - 他们没有多少遗漏你自己不能写的东西。

答案 2 :(得分:1)

Silverlight 3的规模无疑会增长。 Silverlight 3将针对移动设备,因此毫无疑问,该软件包将保持较小。然而,人们要求许多新功能:打印,WCF添加,3D,麦克风支持,硬件加速......毫无疑问它将会增长。它只是将它集成到核心中,或者你的XAP文件必须要大得多。

答案 3 :(得分:0)

.NET框架包含很多在Silverlight等沙盒环境中很少或没有用的东西。

我不希望核心CLR中包含更多的标准.NET框架,但是WPF会有很多东西进入Silverlight3。