Я пишу небольшой движок машинного обучения поверх фреймворка orleans с помощью orleankka. Мне нужно отношение родительского дочернего класса, где родитель поддерживает получение, установку, конструктор по умолчанию и сериализацию. Мои попытки не увенчались успехом в F #.
Обновление: используется интерфейс, теперь мне просто нужно выяснить сериализацию объекта канала изображения.
type imagechannel = int * int * char array[][]
type Iobject =
abstract Value : obj with get, set
abstract FromSerial : SerializationInfo -> StreamingContext -> unit
abstract ToSerial : SerializationInfo -> StreamingContext -> unit
type ImageChannel() =
let mutable value : option<imagechannel> = None
interface Iobject with
member this.Value with get() = value :> obj and set v = value <- v :?> option<imagechannel>
member this.FromSerial info context =
member this.ToSerial info context =
Код контекста:
type ProcessorMessage =
| Eval of (Iobject -> Parms -> Iobject) * Parms
| New of Iobject
| Value
| Load of cache
| Save of cache
| Trans of string * (Iobject -> Parms -> Iobject) * Parms
type Processor() =
inherit Actor<ProcessorMessage>()
let mutable value :option<Iobject> = None
override this.Receive message reply = task {
match message with
| Eval(fn,p) -> value <- (fn value p)
| Load(cache) -> //deserialize value
| Save(cache) -> //serialize value
| New(v) -> value <- v
| Value -> reply value
| Trans(addr,fn,p) -> let proc = this.System.ActorOf(addr)
proc <! New (fn value p) |> ignore
}
Должен ли я реализовать интерфейс сериализации напрямую? Как переопределить элемент абстрактного значения другим типом? Любые другие предложения?