小编Mor*_*eng的帖子

.NET BCL中是否有现成的Json Serialization助手类?

我需要将一些对象序列化/反序列化为字符串,并将它们作为不透明的数据传输.我可以使用XmlSerializer来完成它,但生成的字符串看起来很笨拙.那么,.NET中是否有任何简洁的Serializer?

我想到的第一件事就是.NET可能有JSON Serializer,但我找不到它.在.NET中是否有任何现成的方法将对象转换为简洁的字符串?

.net serialization json

18
推荐指数
2
解决办法
7260
查看次数

选择哪个:ASP.NET MVC或RESTful WCF?

使用ASP.NET MVC,通常有AJAX代码(例如jQuery)从服务器调用Web服务而不刷新页面.使Web服务RESTful是很自然的.似乎有两种方法可以去.首先,ASP.NET MVC URI是RESTful,很容易使一些Controller/Action充当Web服务方法.其次,从版本3.5开始,WCF可以是RESTful.

那么,这两种方式的利弊是什么?

对ASP.NET MVC的请求将通过ASP.NET管道.这会使它比WCF慢吗?

rest asp.net-mvc wcf

17
推荐指数
2
解决办法
5257
查看次数

是否有必要为javascript字符串"转义"字符"<"和">"?

有时,服务器端将生成要嵌入内联JavaScript代码的字符串.例如,如果"UserName"应由ASP.NET生成.然后看起来像.

<script>
   var username = "<%UserName%>";
</script>
Run Code Online (Sandbox Code Playgroud)

这不安全,因为用户可以拥有他/她的名字

</script><script>alert('bug')</script></script>

这是XSS漏洞.

所以,基本上,代码应该是:

<script>
   var username = "<% JavascriptEncode(UserName)%>";
</script>
Run Code Online (Sandbox Code Playgroud)

什么JavascriptEncode确实是增加系统字符"\"前"/"和"""和""."所以,输出HTML是什么样子.VAR用户名="</ SCRIPT>警报(\ '错误\')</ SCRIPT > </ SCRIPT>";

浏览器不会将" </ script> " 解释为脚本块的结尾.所以,XSS避免了.

但是,那里仍然有"<"和">".建议也要逃避这两个字符.首先,我认为将"<"改为"<"并不是一个好主意.和">"到">" 这里.并且,我不确定将"<"更改为"\ <"并且">"更改为"\>"可以被所有浏览器识别.似乎没有必要对"<"和">"进行进一步编码.

对此有什么建议吗?

谢谢.

html javascript xss encode

17
推荐指数
2
解决办法
1万
查看次数

为什么AC#类可以隐式和明确地从一个接口继承?

今天我碰巧发现一个C#类可以以隐式和显式方式继承一个接口.这让我感到惊讶.如果C#以这种方式工作,那么当以不同方式引用时,一个实例的行为会有所不同.

interface IFoo
{
    void DoSomething();
}

class Foo : IFoo
{
    #region IFoo Members
    public void DoSomething()
    {
        Console.WriteLine("do something implicitly");
    }
    #endregion

    #region IFoo Members
    void IFoo.DoSomething()
    {
        Console.WriteLine("do something explicitly");
    }
    #endregion
}


        Foo f = new Foo();
        f.DoSomething();

        ((IFoo)f).DoSomething();
Run Code Online (Sandbox Code Playgroud)

上面的代码运行和输出

do something implicitly
do something explicitly
Run Code Online (Sandbox Code Playgroud)

我相信这种C#设计会使行为不一致.也许强制一个C#类可以以隐式或expliict方式从一个接口继承,但不能同时从两个接口继承.

有没有理由为什么C#以这种方式设计?

c# inheritance explicit implicit

16
推荐指数
3
解决办法
2250
查看次数

为什么XmlSerializer不需要标记类型[Serializable]?

在C#中,如果我想序列化一个实例XmlSerializer,那么对象的类型不必用[Serializable]属性标记.但是,对于其他序列化方法,例如DataContractSerializer,需要将类标记为[Serializable][DataContract].

是否有关于序列化要求的标准或模式?

c# xml-serialization datacontractserializer

16
推荐指数
2
解决办法
4543
查看次数

"@media screen and(-webkit-min-device-pixel-ratio:0)"的语义是什么?

根据http://www.webmonkey.com/2010/02/browser-specific_css_hacks/,我碰巧在WebKit浏览器中使用了下面的CSS hack .

@media screen and (-webkit-min-device-pixel-ratio:0) {
    #my-id { height: 100%; }
}
Run Code Online (Sandbox Code Playgroud)

有用.但是,后来我发现它在生产环境中不起作用.我发现它是由于CSS优化器修剪后的空间and.Chrome无法识别以下CSS.

@media screen and(-webkit-min-device-pixel-ratio:0) {
    #my-id { height: 100%; }
}
Run Code Online (Sandbox Code Playgroud)

那么,究竟是什么@media screen and (-webkit-min-device-pixel-ratio:0)意思呢?

我知道@media screen,但我之前没有and在CSS文件中使用过.

为什么and必要后的空间角色?

css webkit google-chrome css3 media-queries

16
推荐指数
2
解决办法
3万
查看次数

实现Monads的语言必须是静态类型吗?

我正在学习函数式编程风格.在" 不要害怕Monads"中,Brian Beckman对Monad进行了精彩的介绍.他提到Monad是关于功能的组合,以解决复杂性.

Monad包括unit将类型T转换为放大类型M(T)的函数; 和一个Bind函数,给定从T到M(U)的函数,将类型M(T)转换为另一种类型M(U).(U可以是T,但不一定是).

根据我的理解,实现monad的语言应该静态地进行类型检查.否则,在编译期间无法找到类型错误,并且不控制"复杂性".我的理解是否正确?

monads functional-programming static-typing

15
推荐指数
1
解决办法
2329
查看次数

"功能"和"功能"有什么区别?在VIM?

我看到了很多"功能!"的用法.在其他vimrc文件中,但没有易于查找的"功能!"文档.

"功能"和"功能"之间有什么区别?

vim function

15
推荐指数
3
解决办法
2777
查看次数

AJAX Web应用程序中是否需要表单标记?

我读了一些像这样的 AJAX-Form教程.标记表单用于HTML代码.但是,我认为没有必要.既然我们是通过发送HTTP请求的XmlHttpRequest,发送的数据可以是任何东西,没有必要投入形式.

那么,有没有理由在HTML中为AJAX应用程序提供表单标记?

html forms ajax xmlhttprequest

15
推荐指数
2
解决办法
3357
查看次数

C#:虚函数调用甚至比委托调用更快?

我刚刚遇到一个代码设计问题.说,我有一个"模板"方法,可以调用一些可能"改变"的函数.直观的设计是遵循"模板设计模式".将更改函数定义为要在子类中重写的"虚拟"函数.或者,我可以使用没有"虚拟"的委托功能.注入委托函数,以便它们也可以自定义.

最初,我认为第二种"委托"方式比"虚拟"方式更快,但是一些编码片段证明它不正确.

在下面的代码中,第一个DoSomething方法遵循"模板模式".它调用虚方法IsTokenChar.第二个DoSomthing方法不依赖于虚函数.相反,它有一个传入代理.在我的电脑中,第一个DoSomthing总是比第二个快.结果如1645:1780.

"虚拟调用"是动态绑定,应该比直接委托调用更耗时,对吗?但结果表明事实并非如此.

有人可以解释一下吗?

using System;
using System.Diagnostics;

class Foo
{
    public virtual bool IsTokenChar(string word)
    {
        return String.IsNullOrEmpty(word);
    }

    // this is a template method
    public int DoSomething(string word)
    {
        int trueCount = 0;
        for (int i = 0; i < repeat; ++i)
        {
            if (IsTokenChar(word))
            {
                ++trueCount;
            }
        }
        return trueCount;
    }

    public int DoSomething(Predicate<string> predicator, string word)
    {
        int trueCount = 0;
        for (int i = 0; i < repeat; ++i)
        {
            if (predicator(word))
            {
                ++trueCount; …
Run Code Online (Sandbox Code Playgroud)

c# performance virtual delegates

14
推荐指数
4
解决办法
1万
查看次数