F# Реализовать базовый класс

Я новичок в F# и хотел создать приложение F# Forms. Но проблема, которая у меня есть на данный момент, заключается в том, что я не знаю, как реализовать базовый класс. В С# я бы сделал так

namespace Test_Form
{
    public class Form1 : Form
    {
        public Form1()
        {

        }
    }
}

Но как мне сделать это на F#, чтобы мои формы были модулем, а не типом

я уже пробовал

open System
open System.Windows.Forms

type Form1() = 
    inherit Form()

но это приведет к

public class Form1 : Form
{
    public Form1() : this()
    {
    }
}

person Silent3241    schedule 22.10.2016    source источник
comment
Ваш последний фрагмент точно эквивалентен вашему первому фрагменту. В чем проблема?   -  person Fyodor Soikin    schedule 22.10.2016
comment
Что я не могу получить доступ к this.Controls или чему-то подобному в F #, он говорит, что пространство имен или модуль this не определены.   -  person Silent3241    schedule 22.10.2016
comment
Q (оффтоп): почему не WPF?   -  person FoggyFinder    schedule 22.10.2016
comment
@ Silent3241, вы должны были упомянуть проблему в вопросе. Мы не умеем читать мысли, знаете ли.   -  person Fyodor Soikin    schedule 22.10.2016


Ответы (1)


Где бы вы использовали метод конструктора в С#

public class Form1 : Form
{
    public Form1()
    {
        // Do stuff
    }
}

В F#, цитируя документы,

Раздел do-bindings включает код, который будет выполняться при построении объекта.

ты бы

type Form1() =
    inherit Form()

    do // stuff

Например:

type Form1() as this =
    inherit Form()

    do this.Click.Add(fun args -> printfn "%s" <| args.ToString())
person Funk    schedule 22.10.2016
comment
Но как мне получить к этому доступ. * потому что, когда я пытаюсь сделать это, как ваш код, я все еще получаю сообщение об ошибке. Пространство имен или модуль, который не определен - person Silent3241; 22.10.2016
comment
@ Silent3241 Вам нужно изменить type Form1() = на type Form1() as this =. - person Funk; 22.10.2016