37 people like it.
    Like the snippet!
  
  Proxy Pattern
  Proxy pattern is a class functioning as an interface to something else.
  |  1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
 | type CoreComputation() = 
    member this.Add(x) = x + 1
    member this.Sub(x) = x - 1
    member this.GetProxy(name) = 
        match name with
        | "Add" -> (this.Add, "add")
        | "Sub" -> (this.Sub, "sub")
        | _ -> failwith "not supported"
let proxy() = 
    let core = CoreComputation()
    let proxy = core.GetProxy("Add")
    printfn "result = %d" ((fst proxy) 1)
 | 
Multiple items
type CoreComputation =
  new : unit -> CoreComputation
  member Add : x:int -> int
  member GetProxy : name:string -> (int -> int) * string
  member Sub : x:int -> int
Full name: Script.CoreComputation
--------------------
new : unit -> CoreComputation
val this : CoreComputation
member CoreComputation.Add : x:int -> int
Full name: Script.CoreComputation.Add
val x : int
member CoreComputation.Sub : x:int -> int
Full name: Script.CoreComputation.Sub
member CoreComputation.GetProxy : name:string -> (int -> int) * string
Full name: Script.CoreComputation.GetProxy
val name : string
member CoreComputation.Add : x:int -> int
member CoreComputation.Sub : x:int -> int
val failwith : message:string -> 'T
Full name: Microsoft.FSharp.Core.Operators.failwith
val proxy : unit -> unit
Full name: Script.proxy
val core : CoreComputation
val proxy : (int -> int) * string
member CoreComputation.GetProxy : name:string -> (int -> int) * string
val printfn : format:Printf.TextWriterFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
val fst : tuple:('T1 * 'T2) -> 'T1
Full name: Microsoft.FSharp.Core.Operators.fst
  
  
  More information