小编hat*_*cyl的帖子

await await vs Unwrap()

给出一种方法如

public async Task<Task> ActionAsync()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

有什么区别

await await ActionAsync();
Run Code Online (Sandbox Code Playgroud)

await ActionAsync().Unwrap();
Run Code Online (Sandbox Code Playgroud)

如果有的话.

c# async-await

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

是否存在具有以下功能的编程语言?

是否有一种语言可以支持以下概念,或者是否有一种模式可以实现与现有概念类似的东西?

概念

我想定义一个Rectangle具有以下属性:Length,Height,Area,Perimeter,在哪里Area = Length * HeightPerimeter = (2 * Length) + (2 * Height).

鉴于上面的陈述,如果我想Rectangle通过给它a Length和a 创建一个Height,它当然应该自动填写其余的属性.

但是,它应该更进一步,并自动允许您创建Rectangle任何两个属性(说HeightPerimeter),因为这在数学上也足以创建相同的属性Rectangle.

为了帮助解释这个想法,请举个例子:

//Declaration
Rectangle
{
    Height, Length, Area, Perimeter;

    Area = Height * Length;
    Perimeter = (2 * Length) + (2 * Height);
}

//Usage
main()
{
    var rectangleA = new Rectangle(Height, Length);
    var …
Run Code Online (Sandbox Code Playgroud)

language-agnostic programming-languages language-design

6
推荐指数
2
解决办法
204
查看次数

SignalR - 使用 UserID Provider 向用户发送消息

使用 SignalR,我相信我应该能够使用UserID Provider向特定连接的用户发送消息

有没有人有一个如何实施的例子?我搜索和搜索,找不到任何例子。我需要定位一个 javascript 客户端。

用例是,我网站的用户将拥有一个帐户。他们可能从多个设备/浏览器登录。当某些事件发生时,我想向他们发送消息。

javascript c# asp.net asp.net-mvc signalr

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

.NET中的AOP和动作过滤器

2个问题:

  1. MVC中的动作过滤器是否被视为面向方面编程(AOP)?
  2. 如果是这样,.NET是否为非MVC代码提供类似的东西(即常规类库?)

上下文是我想要将日志记录添加到应用程序.我不喜欢在整个地方洒上日志代码,而是喜欢能够定义登录一个中心位置的规则.

似乎我可以使用AOP技术(PostSharp)实现这一目标.但是,如果.NET内置了一些内容,我可能最终会使用它.

.net c# asp.net aop postsharp

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

在IQueryable中执行函数

使用Linq,很容易执行一个函数来投影IEnumerable.

var orders = new List<Order>();
orders.Where(x => x.Id > 50).Select(x => new SomethingElse(x.Name));
Run Code Online (Sandbox Code Playgroud)

使用EntityFramework和IQueryable,这是不可能的.而是在运行时获得不受支持的异常,因为您在Select中没有函数.

不起作用:

var db = new Order();
db.MyEntities.Where(x => x.Id > 50).Select(x => new SomethingElse(x.Name)).Take(10);
Run Code Online (Sandbox Code Playgroud)

是否存在,或者是否有可能为上述工作创造一种方式?

我理解它不起作用,因为它无法将函数转换为SQL可以理解的东西,但是,如果有一个名为'Execute'的扩展方法可以在执行所有linq之前和之后在内存中执行,那会起作用吗?

数据库将仅拉动> 50并且仅在TOP 10之后

var db = new Order();
db.MyEntities.Where(x => x.Id > 50).Execute(x => new SomethingElse(x.Name)).Take(10);
Run Code Online (Sandbox Code Playgroud)

澄清:要求是即使在Sleect()之后仍然保持IQueryable

c# entity-framework iqueryable func

0
推荐指数
1
解决办法
3121
查看次数