A menos que esté haciendo algo complejo, le recomendaría utilizar registros en lugar de clases. Básicamente, son clases con características adicionales: la inmutabilidad, la igualdad estructural, la coincidencia de patrones, etc:
type Playlists = {
Albums: DbSet;
Genres: DbSet
}
Puede obtener campos de grabar fácilmente:
let p = {Albums = ...; Genres = ...}
let albums = p.Albums
let genres = p.Genres
En los campos de registros por defecto son inmutables; puede declarar campos mutables en los registros, pero se considera una mala práctica. Aunque no puede establecer propiedades, puede crear un nuevo registro a partir de uno anterior. inmutabilidad por defecto no es normalmente un problema, además, hace que el código sea más funcional y más fácil de razonar acerca de:
let p = {Albums = a; Genres = g}
// Create new records by updating one field
let p1 = {p with Albums = a1}
let p2 = {p with Genres = g2}
Si insiste para crear clases, usando un constructor con parámetros explícitos se recomienda:
type Playlists(a: DbSet, g: DbSet) =
let mutable albums = a
let mutable genres = g
// ...
Cuando es necesario un constructor por defecto, se puede utilizar para Unchecked.default<'T>
campos no anulables, o mejor uso de sus constructores por defecto:
// Set fields using dump values
let mutable albums = new DbSet()
let mutable genres = new DbSet()
Pero asegúrese de establecer esos campos antes de usarlos realmente.
Una cosa - además de cojín y excelentes respuestas de TomasPetricek: Si está realmente tratando de ser "funcional" entonces yo examinar el supuesto de que lo que necesita clases o de clase como estructuras en primer lugar. Las propiedades automáticas violan la ocultación de buena información al exponer el interior de una clase determinada al resto de la aplicación. Si necesitas el interior de una clase expuesta al resto de la aplicación, entonces tal vez no necesites la clase en primer lugar. Supongo que estoy diciendo que si realmente quieres pensar funcionalmente, deshacerte de la idea de que todo tiene que ser una clase. –
Ah, y una cosa más, teniendo en cuenta lo que está trabajando, es posible que este blog sea útil: http://bugsquash.blogspot.com/2011/11/lenses-in-f.html –