LINUX.ORG.RU

обобщение и интерфейсы

 


0

1

Добрый день, есть несколько типов наподобие

type T1() =
    let mutable _a = ""
    member x.a 
        with get() = _a
        and set(v) = _a <- v
    member x.Other1 = ()

type T2() =
    let mutable _a = ""
    member x.a 
        with get() = _a
        and set(v) = _a <- v
    member x.Other2 = ()
Для представления в WPF хочется создать одну модель для них, как лучше это сделать? Представлять и изменять планируется только мемберы, полностью совпадающие у классов.

Меня устроит примерно следующее, если заставить это работать:

type IT =
    abstract member a : string

type T1() =
    let mutable _a = ""
    interface IT with
        member x.a 
            with get() = _a
            and set(v) = _a <- v
    member x.Other1 = ()

type T2() =
    let mutable _a = ""
    interface IT with
        member x.a 
            with get() = _a
            and set(v) = _a <- v
    member x.Other2 = ()

type TModel (t : IT) =
    member x.a 
        with get() = t.a
        and set(v) = t.a <- v

type IT =
    abstract member a : string
    abstract member a : string with set
dave ★★★★★ ()
Ответ на: комментарий от dave

спасибо,

у меня еще один вопрос - можно как-то получить доступ к полям класса предка в объявлениях полей наследника?

type B (p) = 
    member x.p = p

type T(path)  = 
    inherit BaseSchem(path)
    member x.pp = x.p

pseudo-cat ★★★ ()
Ответ на: комментарий от pseudo-cat

Ты об этом?

type B (p) = 
    member x.p = p

type T(path)  = 
    inherit B(path)
    member x.pp = x.p
dave ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.