使用带有redis服务栈lib的f#类的奇怪行为

时间:2012-04-04 04:00:05

标签: f# redis

我正在使用.Net测试一下redis,我已经阅读了本教程 http://www.d80.co.uk/post/2011/05/12/Redis-Tutorial-with-ServiceStackRedis.aspx   并且遵循使用c#并且工作完美,现在当我尝试将其转换为f#我有一个奇怪的行为时,首先我创建一个简单的f#类(使用类型既不工作也不是预期的)...基本的class就是这样的:

//I ve used [<Class>] to
type Video (id : int, title : string , image : string , url : string) =
  member this.Id = id
  member this.Title = title
  member this.Image = image
  member this.Url = url

当我运行代码时,我的数据库保存了一个空数据,如果我在我的f#代码中使用了ac#class这个工作,所以我确定问题是f#类...如何解决这个问题而不依赖我的f#代码中的c#代码

谢谢!!!

1 个答案:

答案 0 :(得分:2)

根据你的教程,看起来你希望你的F#Video类充满getter和setter属性,而不是像现在一样只有getter的构造函数(而且它是一个类,你可以通过运行来验证它它通过FSI)。

你可以使用一个充满可变字段的记录类型来实现这一点(它被编译成一个充满公共getter和setter的类类型):

type Video = { 
    mutable Id : int
    mutable Title : string
    mutable Image : byte[]
    mutable Url : string
}