Nhibernate 带F的专用/受保护设置器#

Nhibernate 带F的专用/受保护设置器#,nhibernate,f#,functional-programming,c#-to-f#,Nhibernate,F#,Functional Programming,C# To F#,我决定与F#以及MVC4和Nhibernate一起承担一个相对较大的项目 现在,在C#中,我使用ORM的通常做法是为某些属性(例如,自动递增/标识属性、时间戳等)设置私有setter。即 公共课堂指南 { public int Id{get;private set;} 已创建公共日期时间{get;private set;} 公共指南() { Created=DateTime.Now; } } 这里id是一个“标识列”,ORM将处理其值的设置 在F#这是我到目前为止所拥有的 type publi

我决定与F#以及MVC4和Nhibernate一起承担一个相对较大的项目

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

公共课堂指南
{
public int Id{get;private set;}
已创建公共日期时间{get;private set;}
公共指南()
{
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,将setters中的private替换为protected:)

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


不能对自动实现的属性使用差异访问修饰符。因此,如果您想使用不同的访问修饰符,您需要手动实现backing字段(使用
let
)和getter/setter方法。我为什么不先查一下MSDN。非常感谢,并为我的懒惰道歉!啊,是的,匿名的投票人。让他们像往常一样毫无意义地出现……这也许可以解释downvoter的出现:“为什么我没有先查看MSDN。”:)在这一点上对我投反对票有点苛刻!