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

#c# #f# #base-class

#c# #f# #базовый класс

Вопрос:

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

 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()
    {
    }
}
  

Комментарии:

1. Ваш последний фрагмент в точности эквивалентен вашему первому фрагменту. В чем проблема?

2. Что я не могу получить к этому доступ. Элементы управления или что-то подобное в F #, в нем говорится, что «Пространство имен или модуль «это» не определено».

3. Вопрос (оффтопик): почему не WPF?

4. @Silent3241 вы должны были упомянуть проблему в вопросе. Мы не можем читать мысли, вы знаете.

Ответ №1:

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

 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())
  

Комментарии:

1. Но как мне получить к этому доступ. * потому что, когда я пробую это, как ваш код, я все еще получаю сообщение об ошибке «Пространство имен или модуль «это» не определено»

2. @Silent3241 Вам нужно изменить type Form1() = на type Form1() as this = .