Nachdem ich this PDC Sitzung gesehen habe, wollte ich versuchen, ein bisschen F # zu lernen. Also dachte ich, der beste Weg wäre, etwas in F # umzuschreiben, etwas, das ich schon in C# gemacht habe, aber mein Gehirn weigert sich einfach, im funktionalen Modus zu denken. Ich habe diese abstrakte Klasse, die einige abstrakte Methoden und einige virtuelle Methoden hat. Ich möchte auch einige der virtuellen Methoden außer Kraft setzen. Diese Klasse ist in C# geschrieben und kompiliert, und ich beabsichtige nicht, sie in F # neu zu schreiben. Also meine Frage ist:Wie implementiert man eine abstrakte Klasse in F #?
- jemand eine kurze Probe hat, wie eine abstrakte Klasse, abstrakte Methode und virtuelle Methode
- kann ich Konstrukteurs überlastet zu implementieren?
- gibt es irgendwelche Einschränkungen, wenn ich es in einer DLL kompilieren und es meinen C# -basierten Programmen zur Verfügung stellen möchte.
Jede Hilfe wäre willkommen.
Update: ich wirklich zu schätzen wirklich Brians Antwort, aber es ist immer noch nicht klar für mich, so will ich klarstellen. Nehmen wir an, das ist meine abstrakte Klasse, die in C# geschrieben und in DLL kompiliert wird. Wie implementiere ich es in F #?
public abstract class MyAbstractClass
{
public abstract Person GetFullName(string firstName, string lastName);
public abstract bool TryParse(string fullName, out Person person);
public virtual IEnumerable<Person> GetChildren(Person parent)
{
List<Person> kids = new List<Person>();
foreach(Child person in GroupOfPeople)
{
if(person.Parent == parent)
kids.Add(child as Person);
}
return kids;
}
public virtual IEnumerable<Child> GroupOfPeople { get; set; }
}
Ein Teil der Dokumentation für wen auch immer für einige F # Ressourcen sucht: - wenn andere F # eine Dokumentation bekommen ich auf Don Syme (Konzept von F #) Blog free chapters of his book F# Expert gefunden interessiert ist. Sie können diese im Doc-Format herunterladen.
- Real World Functional Programming von Tomas Petricek hat free chapter here
Einige andere Ressourcen, die von Interesse sein könnten:
- Scott Hanselman's blog Post
- Dustin Campbell's blog
- Tomas Petricek's blog
- Der Ort für F # - hubFS
- F# WIKI
- Microsoft Research
Ist es möglich, dass eine F # abstrakte Klasse zu einer Schnittstelle zu implementieren? – Stringer
Ich habe editiert, um einen Weg zu zeigen, es zu tun. – Brian
Aktual ich gemanagt ist es möglich, abstrakte Mitglieder, die Schnittstelle eine Schnittstelle haben. Z.B. Schnittstelle IBaz mit abstract member Baz: int -> int – Stringer