我有一个用C#编写的现有项目。我想将其中一部分业务逻辑移植到F#中。 MyObjectX是一个运行科学算法的C#类。 为了使MyObjectX运行,它需要实现一些接口,并通过方法注入一些依赖项(而不是构造函数)。例如:
public class MyObjectX(): IMathSolver, IBusinessSolver
{
//private fields
private int operationMode;
private ISignalProvider signal;
//Inject dependcy via method
public void SetSignalProvider(ISignalProvider signal)
{
this.signal = signal;
}
//implemention of above interfaces
public double MethodMathSolver()
{
this.signal.GetThreshold();
//...
}
public double Method1BusinessSolver()
{
}
public double Method2MathSolver(IResultProvider provider)
{
var x = provider.GetValueAtTime(0.1);
//...
}
}
现在我想在 F# 中实现 MyObjectX。如何以最大程度地使代码具有函数式,下面是三种方法:
将现有的 C# MyObjectX 作为包装器/外观器行为,放置在其他 C# 类和 F# 库之间,算法在 F# 模块中实现。
编写 F# MyObjectX 类来实现接口,可能调用其他 F# 模块。
或者以上两种都不是,请告知建议。
请建议并提供代码示例,谢谢。