gpt4 book ai didi

nhibernate - 使用 F# 的私有(private)/ protected setter

转载 作者:行者123 更新时间:2023-12-03 16:59:40 26 4
gpt4 key购买 nike

我决定用 F# 连同 MVC4 和 Nhibernate 一起承担一个相对较大的项目。

现在,在 C# 中,我通常使用 ORM 的做法是为某些属性(例如自动递增/身份属性、时间戳等)设置私有(private) setter 。 IE

public class Guide
{
public int Id { get; private set; }
public DateTime Created { get; private set; }

public Guide()
{
Created = DateTime.Now;
}
}

这里 id 是一个“身份列”,ORM 将处理设置它的值。

在 F# 中,这是我到目前为止所拥有的
type public Guide() =
member val public Id = 0 with get, set
member val public Created = DateTime.MinValue with get, set

但是我遇到的问题是getter/setter不能有访问修饰符!

我是 F# 的新手,所以我想知道执行此类操作的最佳方法。但是,我不只是想用 F# 重写 C# 代码!我想知道正确的(功能)方法。也许使用其他构造?

编辑:对于 NHibernate,在 setter 中将 private 替换为 protected :)

最佳答案

根据Properties (F#)在 MSDN 页面上,您可以在 getter/setter 上使用访问修饰符。您还可以对 getter 和 setter 使用不同的访问修饰符(例如,公共(public) get 和私有(private) set )。

您不能做的是对自动实现的属性使用差异访问修饰符。因此,如果您想使用不同的访问修饰符,您需要手动实现支持字段(使用 let )和 getter/setter 方法。

关于nhibernate - 使用 F# 的私有(private)/ protected setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com