小编spe*_*der的帖子

匿名函数和内存消耗

在内存消耗方面,这些是等价的,还是我们为后者的每个对象获得一个新的函数实例?

var f=function(){alert(this.animal);}
var items=[];
for(var i=0;i<10;++i)
{
    var item={"animal":"monkey"};
    item.alertAnimal=f;
    items.push(item);
}
Run Code Online (Sandbox Code Playgroud)

var items=[];
for(var i=0;i<10;++i)
{
    var item={"animal":"monkey"};
    item.alertAnimal=function(){alert(this.animal);};
    items.push(item);
}
Run Code Online (Sandbox Code Playgroud)

编辑

我认为为了使闭包正常工作,第二个实例确实会在每次传递时创建一个新函数.它是否正确?

javascript function

5
推荐指数
1
解决办法
249
查看次数

StackOverFlow 使用的 WMD 编辑器是如何工作的?

我很想知道您在文本框中键入的文本如何不需要刷新页面?一些类似的替代方案包括:

像素

但是他们倾向于在每次按下按键时刷新页面......

javascript ajax markdown

5
推荐指数
1
解决办法
175
查看次数

异步ctp递归

我使用异步CTP进行第一次播放约15分钟......(很好).

这是一个非常简单的服务器,我已经敲了一下:

internal class Server
{
    private HttpListener listener;
    public Server()
    {
        listener = new HttpListener();
        listener.Prefixes.Add("http://*:80/asynctest/");
        listener.Start();
        Go();
    }

    async void Go()
    {
        HttpListenerContext context = await listener.GetContextAsync();
        Go();
        using (var httpListenerResponse = context.Response) 
        using (var outputStream = httpListenerResponse.OutputStream) 
        using (var sw = new StreamWriter(outputStream))
        {
            await sw.WriteAsync("hello world");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

可以看出,异步方法Go调用自身.在经典的非异步世界中,这会导致堆栈溢出.我认为这不是异步方法的情况,但我想确定,不管怎样.任何人?

c# recursion async-ctp

5
推荐指数
1
解决办法
679
查看次数

使用ninject创建初始化后对象

我是Ninject的新手(和DI一般).

我理解内核如何加载模块,到目前为止我编写的代码往往只有一行:

myKernel.Get<MyApp>()
Run Code Online (Sandbox Code Playgroud)

它从我的模块中的绑定构造我需要的一切.如果在初始化之后需要新实例,那么这些由我绑定初始化的工厂负责.到目前为止,工厂已经没有任何ninject依赖项,只需按需创建对象.

现在我已经达到了一个点,我需要考虑初始化后的对象创建,我自己的工厂模式不再削减它.这将是为(远程)客户端支持pub/sub接口.对于我的服务器的每个新连接,我想IClient根据ninject模块中定义的一组绑定创建新实例.这是否意味着我在初始化时传入的工厂必须有自己的内核(或者对主内核的引用)?CommonServiceLocator的功能在哪里.CSL是否必要?

在我走得太远之前,我认为最好在这里询问其他人如何处理这个问题.

c# architecture ninject ninject-2

5
推荐指数
1
解决办法
1660
查看次数

脚手架和显示/编辑模板

说我有以下型号:

public class Item
{
    public int Id{ get; set; }
    public ItemDescription ItemDescription{ get; set; }
}
public class ItemDescription
{
    public int Id{ get; set; }
    public int Revision{ get; set; }
    public string Test{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在包管理器中运行以下命令:

Scaffold Controller Item
Run Code Online (Sandbox Code Playgroud)

生成一些视图和东西...但似乎脚手架忽略任何复杂/非标量数据类型,因此生成很少使用的视图.

我想知道是否有可能指示脚手架对事物更加智能化.这就是我想要发生的事情:

  • scaffolder在共享文件夹中创建编辑器/显示模板
  • 用于EditorFor利用这些模板

实现这一目标的所有代码似乎都是由脚手架生成的,但其构造方式让我感到惊讶,并_CreateOrEdit.cshtml在与视图关联的文件夹中生成"模板".对我来说,这表明脚手架生成的代码不适合以更加递归的方式为模型生成视图.

我的期望是否已经结束,或者我错过了什么?

c# asp.net-mvc ef-code-first asp.net-mvc-3 asp.net-mvc-scaffolding

5
推荐指数
1
解决办法
898
查看次数

如何在c#中读取XML文件?

我有以下XML文件,我想知道阅读此XML文件的最佳方法

<MyFile> 
  <Companies> 
    <Company>123</Company> 
    <Company>456</Company>
    <Company>789</Company> 
  </Companies> 
</MyFile>
Run Code Online (Sandbox Code Playgroud)

作为输出我需要收集像"123,456,789"这样的值,或者它可能是字符串[]的数组

我们可以将Linq用于xml吗?怎么样?

c# xml linq linq-to-xml

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

我对开闭原则的理解正确吗?

假设在我假设的软件的第一个版本中,我有一个像这样的简单类:

public Class Version1
{
    public void Method1()
    {
       Console.WriteLine("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

在第二个版本中,我进行了升级,需要对方法 1 进行如下修改:

public Class Version1
{
    public void Method1()
    {
       Console.WriteLine("Hello");
       Console.WriteLine("World");
    }
}
Run Code Online (Sandbox Code Playgroud)

在第三个版本中,我进行了升级,需要向此类添加另一个方法,如下所示:

public Class Version1
{
    public void Method1()
    {
       Console.WriteLine("Hello");
       Console.WriteLine("World");
    }

    public int Method2()
    {
        return 7;
    }    
}
Run Code Online (Sandbox Code Playgroud)

现在,根据我对开闭原则的理解,在两次升级中,我都违反了这一原则,因为我修改了在我的软件的第一个版本中执行所需工作的类。

我认为应该这样做,但不确定是否正确,是这样的:

public virtual Class Version1
{
    public virtual void Method1()
    {
       Console.WriteLine("Hello");
    }
}

public virtual Class Version2 : Version1
{
    public override void Method1()
    {
       Console.WriteLine("Hello");
       Console.WriteLine("World");
    }
}  

public Class …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism inheritance open-closed-principle

5
推荐指数
1
解决办法
205
查看次数

ASP.NET API Owin 以另一个用户身份登录

我在我的应用程序中使用 ASP.NET Web API 2、Owin 和 Identity 使用基于令牌的身份验证。

我需要功能允许具有“管理员”角色的用户以另一个(非管理员)用户的身份查看信息(无需密码登录,仅使用另一个用户的用户名)。

我不知道如何在控制器中生成新令牌并将其保存在会话中。

c# asp.net-web-api owin

5
推荐指数
1
解决办法
1381
查看次数

从LinqToXYZ切换到LinqToObjects

在回答这个问题时,它让我思考......

我经常使用这种模式:

collectionofsomestuff //here it's LinqToEntities
    .Select(something=>new{something.Name,something.SomeGuid})
    .ToArray() //From here on it's LinqToObjects
    .Select(s=>new SelectListItem()
        {
            Text = s.Name, 
            Value = s.SomeGuid.ToString(), 
            Selected = false
        })
Run Code Online (Sandbox Code Playgroud)

也许我会将它分成几行,但实际上,在这ToArray一点上,我实际上是在枚举我的查询并存储结果序列,这样我就可以用完整的CLR的所有优点来进一步处理它.

因为我对中间列表的任何操作都不感兴趣,所以我会使用ToArray,ToList因为开销较少.

我一直这样做,但我想知道这种问题是否有更好的模式?

c# linq

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

CHECKSUM和CHECKSUM_AGG:算法是什么?

我们在sql server中执行一些数据的校​​验和,如下所示:

declare @cs int;
select 
    @cs = CHECKSUM_AGG(CHECKSUM(someid, position))
from 
    SomeTable
where 
    userid = @userId
group by 
    userid;
Run Code Online (Sandbox Code Playgroud)

然后,这些数据与客户共享.我们希望能够在客户端重复校验和...但是似乎没有关于如何计算上述函数中的校验和的任何信息.任何人都可以开导我吗?

sql-server checksum sql-server-2008

4
推荐指数
2
解决办法
2759
查看次数