为 C# 接口制作 F# class 或模块?
Make an F# class or module for a C# interface?
我完全迷失在 F# 界面上。我正在尝试用满足 C# 接口的 F# 类型替换我的 C# classes。
我有以下 C# 接口:
public interface IPatientName
{
string lastName { get; }
string firstName { get; }
string mi { get; }
DateTime? birthDate { get; }
}
在我的 C# 代码中,我有多个依赖注入和其他类似的东西,例如 "List<"IPatientName>”。
假设我有一个典型的 C# class 实现了 IPatientName,
例如,
public class PatientName : IPatientName
{
…………….
}
如何使 F# 模块或 class 满足 C# 编译器的要求并用 F# class 或模块替换 C# class PatientName?
感谢您对此的任何帮助。
实现接口非常简单。鉴于上面的示例,下面的代码就足够了。注意:在 F# 上下文中,实际上并不推荐 Nullable,但对于 C# interop,可以使用它。对于 F# 不可知论代码,最好使用可以更好地处理 null 问题的 Option 类型。 Ionide(VS 代码)扩展在撰写本文时可以 implement/generate 在您在下面的 class 中键入代码的 "interface IPatientName" 部分后为您提供方法。
open System
// F# version of the interface you described.
type IPatientName =
abstract member LastName: string with get
abstract member FirstName: string with get
abstract member Mi: string with get
abstract member BirthDate: Nullable<DateTime> with get
// Class implementing interface above.
type PatientName =
interface IPatientName with
member this.BirthDate = Nullable(DateTime(2020, 1, 1))
member this.FirstName = "FirstName"
member this.LastName = "LastName"
member this.Mi = "Mi"
我完全迷失在 F# 界面上。我正在尝试用满足 C# 接口的 F# 类型替换我的 C# classes。
我有以下 C# 接口:
public interface IPatientName
{
string lastName { get; }
string firstName { get; }
string mi { get; }
DateTime? birthDate { get; }
}
在我的 C# 代码中,我有多个依赖注入和其他类似的东西,例如 "List<"IPatientName>”。
假设我有一个典型的 C# class 实现了 IPatientName, 例如,
public class PatientName : IPatientName
{
…………….
}
如何使 F# 模块或 class 满足 C# 编译器的要求并用 F# class 或模块替换 C# class PatientName?
感谢您对此的任何帮助。
实现接口非常简单。鉴于上面的示例,下面的代码就足够了。注意:在 F# 上下文中,实际上并不推荐 Nullable,但对于 C# interop,可以使用它。对于 F# 不可知论代码,最好使用可以更好地处理 null 问题的 Option 类型。 Ionide(VS 代码)扩展在撰写本文时可以 implement/generate 在您在下面的 class 中键入代码的 "interface IPatientName" 部分后为您提供方法。
open System
// F# version of the interface you described.
type IPatientName =
abstract member LastName: string with get
abstract member FirstName: string with get
abstract member Mi: string with get
abstract member BirthDate: Nullable<DateTime> with get
// Class implementing interface above.
type PatientName =
interface IPatientName with
member this.BirthDate = Nullable(DateTime(2020, 1, 1))
member this.FirstName = "FirstName"
member this.LastName = "LastName"
member this.Mi = "Mi"