小编use*_*180的帖子

Async.AwaitTask如何在f#中工作?

我理解f#和c#异步模型之间的主要区别在于f#中,除非你调用类似Async.RunSynchronously的东西,否则异步执行不会开始.在c#中,当方法返回任务时,通常(并非总是)立即在后台线程中启动执行.

Async.AwaitTask文档说"返回一个等待给定任务完成并返回其结果的异步计算."

这是否意味着,当您调用返回任务的ac#方法时,执行已经在后台启动了?如果是这样,那么将它包装在Async类型中又有什么意义呢?

f#

9
推荐指数
1
解决办法
550
查看次数

丰富的域模型实现

我最近开始阅读富域模型而不是贫血模型.我之前工作的所有项目都遵循服务模式.在我的新项目中,我正在尝试实现丰富的域模型.我遇到的一个问题是试图确定行为的位置(在哪个类中).考虑这个例子 -

public class Order
{

   int OrderID;
   string OrderName;

   List<Items> OrderItems;
}

public class Item
{
   int OrderID;
   int ItemID;
   string ItemName;

}
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,我在Item类中有AddItem方法.在我向订单添加Item之前,我需要确保传入有效的订单ID.所以我在AddItem方法中进行验证.我是否在正确的轨道上?或者我是否需要在Order类中创建验证,以告知OrderID是否有效?

c# oop design-patterns

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

抛出异常是一个好习惯吗?

考虑一个示例,其中用户使用两个 aspx 页面中的表单输入客户对象的值。使用第一种方法,在调用构造函数之前,两个 aspx 页面都需要验证 ID 大于 0 并且 FirstName 不为空。使用第二个选项,两个页面都可以调用验证函数并向用户显示错误消息。

根据上面的例子,我更喜欢第二种选择。然而,当我在网上研究时,我不断发现它更面向对象,立即抛出异常而不让对象接受无效数据。正如我之前所说,除了例外情况,调用此构造函数的每个页面都需要验证输入是否有效。我不喜欢重复这个逻辑,所以我更喜欢第二种选择。

领域驱动设计方面的首选选项是什么?

选项1

public class Customer{

   public int ID { get; set; }
   public string FirstName { get; set; }

   public Customer(int ID, string FirstName){
      if (ID < 0)
          throw new Exception("ID cannot be less than 0");
      if (string.IsNullOrEmpty(FirstName))
          throw new Exception("First Name cannot be empty");

      this.ID = ID;
      this.FirstName = FirstName;
   }
}
Run Code Online (Sandbox Code Playgroud)

选项2

public class Customer{

   public int ID { get; set; }
   public string FirstName { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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

在chessie错误处理中Trial.lift和Trial.bind有什么区别?

我正在寻找国际象棋图书馆.我经常看到正在使用Trial.lift和Trial.bind函数.如果我理解正确,Trial.lift接受一个函数参数并执行并返回该函数,如果管道中的结果是成功的.如果这是真的,那么Trial.bind不会做同样的事情吗?

f#

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

Actor 模型(Akka.net)中的状态存储在哪里?

我是演员模型的新手。我正计划为我的一个项目实现 Actor 模型,因此我开始阅读有关 Akka.Net 的内容。从文档中可以看出,Actor 的状态在 Actor 的整个生命周期中都保持不变。

1.状态存储在哪里?在公羊上?如果是这样的话,我们的内存空间会不会用完?

2.当我有数百万条记录时,如何实现Actor模型?假设我想为拥有一百万条记录的客户表实现一个 Actor。我将如何加载客户?

c# actor akka akka.net

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

在f#中调用函数时何时使用括号?

我正在学习f#,我知道在调用函数时你不需要使用括号.

防爆

let addOne arg1 =
    arg1 + 1

addOne 1
Run Code Online (Sandbox Code Playgroud)

VS

this.GetType()
Run Code Online (Sandbox Code Playgroud)

为什么我必须在第二个函数上使用括号?

f#

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

如何解开没有模式匹配的歧视联盟?

我有一个像这样的歧视联盟:

Type Result =
| Good of bool | Bad of bool
Run Code Online (Sandbox Code Playgroud)

在许多情况下,我知道结果是好的.要打开结果,我必须使用模式匹配仅适用于Good选项.结果我收到一条警告(不是错误),上面写着"此表达式上的模式匹配不完整......".有没有办法解开,而不必使用模式匹配?

f#

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

使用Type缩写/别名时,我为什么要使用fun关键字?

在下面的例子中,我使用的是Type缩写.为什么我应该使用fun关键字,而不是在没有fun关键字的情况下调用它?

type AdditionFunction = int->int->int

let f:AdditionFunction = fun a b -> a + b
Run Code Online (Sandbox Code Playgroud)

f#

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

多次调用ToList会影响性能吗?

我经常看到调用ToList会使查询每次都执行.我有点困惑.那么在这种情况下,第二次调用ToList会使查询多次执行吗?在什么情况下查询会多次执行?

//This gets from database and ToList is already called here
List<Customer> Customers = GetCustomersFromDataBase();

//ToList is called here again
List<Customer> FilteredCustomers = (from c in Customerswhere c.id == 1c).ToList();
Run Code Online (Sandbox Code Playgroud)

编辑

我刚刚提供了这个代码示例来了解ToList真正做了什么.我没有这样实现它.此外,我进行存储过程调用以从db返回客户,并从返回的数据表创建客户列表.

c# linq

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

在这种情况下,运算符“(&gt; =)”是什么?

现在,我知道可以将第一行代码缩短为第二行。这是我第一次遇到它,找不到关于该运算符的任何文档。它是否也可以用于其他事物的抽象概念?

let contains optValue value =
    Option.exists (fun v -> v >= value) optValue

let contains optValue value =
    Option.exists ((>=) value) optValue
Run Code Online (Sandbox Code Playgroud)

f#

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

DateTime.Compare未按预期工作

我以下列方式插入客户.

DateTime d = DateTime.Now;

foreach(Customer cus in CustomerList)
{
    cus.EntryDate = d;
}

SaveToDatbase(CustomerList);
Run Code Online (Sandbox Code Playgroud)

使用正确的输入日期成功保存日期,但是当我检索数据并将其与变量d进行比较时,它不匹配.

foreach(Customer cus in GetFromDatabase())
{
    Response.Write(DateTime.Compare(cus.EntryDate, d));
}
Run Code Online (Sandbox Code Playgroud)

输出为1而不是0.我检查了插入的数据,它与d变量值匹配,毫秒.日期存储在sql server数据库中.我意识到的一件事是,如果我为cus.EntryDate和d重置毫秒为0,则输出为0.我在这里做错了什么?

c# asp.net c#-4.0

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

如何宣布可以为空的歧视联盟?

我有一个像这样的歧视联盟

type foo =
| Yes of bool
| Number of decimal
Run Code Online (Sandbox Code Playgroud)

我有另一种类型,我试图将这个DS作为一个可以为空的成员

type test(value) =
member this.Value : Nullable<foo> = value
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我得到"一个泛型构造要求类型"foo"有一个公共默认构造函数.我该如何解决这个问题?

f#

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

Async.RunSynchronously方法阻塞吗?

文档中可以看出Async.RunSynchronously运行异步计算并等待其结果.我也读到它与C#中的等待类似.我很好奇,如果它阻止线程直到它运行完成?

f#

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

标签 统计

f# ×8

c# ×5

asp.net ×2

actor ×1

akka ×1

akka.net ×1

c#-4.0 ×1

design-patterns ×1

linq ×1

oop ×1