小编And*_*ock的帖子

在c#中组合两个lambda表达式

给定这样的类结构:

public class GrandParent
{
    public Parent Parent { get; set;}
}
public class Parent
{
    public Child Child { get; set;}
}

public class Child
{
    public string Name { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

和以下方法签名:

Expression<Func<TOuter, TInner>> Combine (Expression<Func<TOuter, TMiddle>>> first, Expression<Func<TMiddle, TInner>> second);
Run Code Online (Sandbox Code Playgroud)

我如何实现所述方法,以便我可以像这样调用它:

Expression<Func<GrandParent, Parent>>> myFirst = gp => gp.Parent;
Expression<Func<Parent, string>> mySecond = p => p.Child.Name;

Expression<Func<GrandParent, string>> output = Combine(myFirst, mySecond);
Run Code Online (Sandbox Code Playgroud)

这样输出结果如下:

gp => gp.Parent.Child.Name
Run Code Online (Sandbox Code Playgroud)

这可能吗?

每个Func的内容只会是一个MemberAccess.我宁愿不最终output成为嵌套函数调用.

谢谢

c# lambda

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

Ruby $ stdin.gets没有在屏幕上显示字符

我想要求用户输入密码,但我不希望字符在键入时显示在屏幕上.

我如何在Ruby中执行此操作?

ruby

24
推荐指数
4
解决办法
7462
查看次数

ASP.NET machineKey配置部分的默认位置

我在哪里可以找到machineKeyASP.NET 的配置部分?

我的应用程序Web.config中没有一个,根目录中没有一个,我的应用程序Web.config中没有一个machine.config.

这是否意味着有一些其他默认硬编码到ASP.NET中?如果是这样,默认值是多少?(适用于.NET 2和4)

阅读本文:http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx

我希望在某个地方找到这样的东西:

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
/>
Run Code Online (Sandbox Code Playgroud)

编辑: 1.1文档似乎相当明确wrt默认值:http://msdn.microsoft.com/en-us/library/w8h3skw9( VS.71) .aspx但4个文档相当模糊http://msdn.microsoft .COM/EN-US /库/ w8h3skw9.aspx

asp.net machinekey

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

流利的nhibernate HasOne WithForeignKey无法正常工作

每当我加载Task类时,尽管db中有数据,Document属性始终为null.

任务类:

public class Task
{
    public virtual Document Document { get; set; }
Run Code Online (Sandbox Code Playgroud)

AutoPersistenceModel的任务映射覆盖:

public void Override(AutoMap<Task> mapping)
{
    mapping.HasOne(x => x.Document)
        .WithForeignKey("Task_Id");
Run Code Online (Sandbox Code Playgroud)

正如你可以看到NHProf所说的那样,连接条件是错误的,WithForeignKey似乎没有生效.事实上,我可以在上面的代码中写任何字符串,它没有任何区别.

FROM   [Task] this_
    left outer join [Document] document2_
    on this_.Id = document2_.Id
Run Code Online (Sandbox Code Playgroud)

它应该是:

FROM   [Task] this_
    left outer join [Document] document2_
    on this_.Id = document2_.Task_Id
Run Code Online (Sandbox Code Playgroud)

如果我破解数据库中的数据以便id匹配,则加载数据,但显然这是不正确的 - 但至少证明它加载了数据.

编辑:在流利的nhib源中搜索,找到XML产生这个:

<one-to-one foreign-key="Task_Id" cascade="all" name="Document" class="MyProject.Document, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
Run Code Online (Sandbox Code Playgroud)

编辑:继承人架构:

CREATE TABLE [dbo].[Document](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Task_Id] [int] NOT NULL,

CREATE TABLE [dbo].[Task]( …
Run Code Online (Sandbox Code Playgroud)

fluent-nhibernate

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

优雅地使用ViewModels在MVC中进行POST操作

目前我将我的域对象传递给我的视图,并从POST直接绑定到它们.每个人都说这很糟糕,所以我试图添加ViewModel概念.

但是,我找不到一种方法来非常优雅地做到这一点,而且我想知道其他人的解决方案是什么,最终不会出现非常混乱的控制器动作.

一些"添加人"功能的典型过程如下所示:

  1. 对表示空白Person视图模型的视图发出GET请求
  2. 回发(中)有效数据
  3. controller将发布的数据绑定到人视图模型上
  4. 如果绑定失败,我需要执行与(1)中相同的操作,但需要一些数据,而不是空白对象和错误
  5. 如果绑定成功,我需要将VM的属性映射到真实模型
  6. 验证模型
  7. 如果验证通过:保存人员,提交,将用户详细信息映射到显示VM并在视图中返回
  8. 如果验证失败,请执行与(1)中相同的操作,但有一些数据和错误

在控制器动作中执行所有这些操作(忽略GET)肯定不是SRP或DRY.

我试图想办法打破这个过程,以便它遵守SRP,干净,模块化,最重要的是可测试.

人们有什么解决方案?

我一直在尝试使用自定义控制器动作调用器来将关注点分成单独的方法,智能模型绑定器和简单的暴力,但我还没有遇到过满意的解决方案.

PS因为它增加了如此多的复杂性,让我相信为什么我甚至需要打扰

asp.net-mvc viewmodel

23
推荐指数
2
解决办法
6430
查看次数

如何用HTML5画布绘制甜甜圈的片段?

正如标题所述.这可能吗?

编辑:当我说甜甜圈时,我指的是一个顶级的2D视图

是绘制圆的一个圆的唯一选项,然后绘制一个较小的圆的一段,其中相同的原点和较小的半径在顶部,与背景的颜色?如果是这样,那将是废话:(

html5 canvas

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

如何获取数组的所有子集?

给定一个数组: [dog, cat, mouse]

什么是最优雅的创作方式:

[,,]
[,,mouse]
[,cat,]
[,cat,mouse]
[dog,,]
[dog,,mouse]
[dog,cat,]
[dog,cat,mouse]
Run Code Online (Sandbox Code Playgroud)

我需要这个适用于任何大小的数组.

这本质上是一个二进制计数器,其中数组索引代表位.这可能让我使用一些按位运算来计算,但我看不到将其转换为数组索引的好方法.

c# arrays

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

使用msbuild编译时间mvc视图检查

我发现在ASP.NET MVC项目的.csproj中有以下目标:

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

这将检查.csproj中的MvcBuildViews bool属性,如果设置为true,则获取构建以检查视图.

我使用NAnt来构建我的应用程序以进行部署,是否可以从msbuild命令行运行此目标而无需修改csproj?(我希望它只在部署时运行,而不是每个构建都运行,因为它的慢速+ resharper无论如何都会在VS中捕获它)

如果没有,如何将上述代码翻译成msbuild命令行,以便我可以修改我的部署脚本?这是我当前的脚本:

<target name="Deploy" depends="init">
    <exec basedir="." program="${DotNetPath}msbuild.exe" commandline=" src/MyProject.Web/MyProject.Web.csproj /nologo 
  /t:Rebuild
  /t:ResolveReferences;_CopyWebApplication
  /p:OutDir=../../output/build/bin/
  /p:WebProjectOutputDir=../../output/build/
  /p:Debug=false
  /p:Configuration=Release
  /v:m"
    workingdir="." failonerror="true" />
    <call target="tests"/>
    <call target="compress-js"/>
    <call target="compress-css"/>
    <call target="rar-deployed-code"/>
  </target>
Run Code Online (Sandbox Code Playgroud)

msbuild asp.net-mvc

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

SignalR/Websockets连接限制和最佳实践

我试图了解如何最好地设计基于IIS/ASP.NET的websocket应用程序,特别是关于并发限制.

我已经阅读了有关"并发Websocket连接"的IIS/ASP.NET的所有文献以及如何调整各种值 - 但是,在谈到websockets时,"并发"的定义是什么?如果我打开了一个websocket并且它处于空闲状态,那是"使用"连接吗?空闲的websockets是否计入连接使用总数,或仅在发送/接收消息时计算?

我希望在任何时候都能打开一个非常高(100个)的网页数量,但是会发送很少的消息,也许每分钟几个,它们将永远是服务器 - >客户端(并且一个,特定的客户,而不是广播).这种安排是否/应该引导我进入任何特定的实施路线?

似乎SignalR集线器可能过度,我不需要不支持websockets的客户端的后备,我只需要维护每个客户端连接的句柄,这样当我的系统"决定"向特定客户端发送消息时,它可以适当地路由它.

我正在引用的文档:

谢谢

websocket signalr

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

有没有一种简单的方法可以将int转换为每个数字的整数数组?

说我有

var i = 987654321;
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来获得数字的数组,相当于

var is = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
Run Code Online (Sandbox Code Playgroud)

没有.ToString()和迭代的字符int.Parse(x)

c#

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