2013-06-22 23 views
4

我決定用F#與MVC4和Nhibernate一起進行一個相對較大的項目。現在,在C#中,我通常使用ORM的做法是爲某些屬性(例如自動遞增/標識屬性,時間戳等)設置私有setter。 I。F私有/受保護的安裝程序#

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的,取代私人用的制定者:)

+1

啊,是的,匿名倒票選民。讓他們無意義的存在像往常一樣...... – Umair

+0

這可能解釋downvoter的存在:「爲什麼哦,爲什麼我沒有先檢查MSDN。」 :) – bytebuster

+0

有點苛刻讓我失望! – Umair

回答

4

保護按照Properties (F#)頁面上MSDN,你可以你的getter/setter方法訪問修飾符。您還可以爲獲取者和設置者使用不同的訪問修飾符(例如,公共get和私人set)。

不能 do是使用差異訪問修飾符來自動實現的屬性。因此,如果您想使用不同的訪問修飾符,則需要手動實現後臺字段(使用let)和getter/setter方法。

+0

Do'h。爲什麼哦爲什麼我沒有先檢查MSDN。非常感謝你,併爲我的懶惰道歉! – Umair