У меня есть следующий интерфейс, определенный в библиотеке C #
public interface IMatch
{
string CompetitionId { get; }
int MatchNumber { get; }
MatchType Type { get; }
SeriesType SeriesType { get; }
bool Finished { get; }
}
Затем я создал тип в моей библиотеке F #, который реализует такой интерфейс
type Match(
competitionId: string,
finished: bool,
matchNumber: int,
seriesType: SeriesType,
matchType: MatchType) =
interface IMatch with
member this.Finished with get() = finished
member this.MatchNumber with get() = matchNumber
member this.SeriesType with get() = seriesType
member this.Type with get() = matchType
member this.CompetitionId with get() = competitionId
Теперь,Я прочитал эту статью и увидел метод WithUpdatedEmail
для типа Person:
type Person = {
FirstName: string
LastName: string
Email: string
}
with member this.WithUpdatedEmail email = { this with Email = email }
При вызове этого метода он вернет новый экземпляр Person с обновленным адресом электронной почты.Можно ли добавить такой метод для моего типа Match
?Я попробовал следующее, но не могу заставить его скомпилировать ( Метка записи Finished
не определена ), я совершенно новичок в F #, поэтому, пожалуйста, потерпите меня, если это невозможно...:)
type Match(
competitionId: string,
finished: bool,
matchNumber: int,
seriesType: SeriesType,
matchType: MatchType) =
interface IMatch with
member this.Finished with get() = finished
member this.MatchNumber with get() = matchNumber
member this.SeriesType with get() = seriesType
member this.Type with get() = matchType
member this.CompetitionId with get() = competitionId
with member this.Finished finished = { this with Finished = finished}