作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解如何在 .NET 世界中实现可替换组件或服务提供者接口(interface)。我怀疑我只是不知道要搜索的适当术语。
具体来说,我正在玩Matrix
具有不同后端的类。在最简单的情况下,矩阵提供了两个参数的 get 和 set 方法以及一个构造函数。实现对最终用户来说并不重要。例如,根据矩阵的大小,矩阵可能由内存中的数组、文件或分布式键值存储支持。我想隐藏后端实现并允许第三方提供新的后端实现。
例如,从 IronPython 调用的理想 API 可能类似于
a = matrix(data = 0, rows = 1000, cols = 10, backend = 'file://test.txt')
a[100, 2] = 1
print a[100, 2]
最佳答案
是的,您可以创建一个接口(interface)IMatrix
以及实现它的具体类,如下所示:
type IMatrix =
abstract Item : (int * int) -> single with get, set
type ConcreteMatrix (data:single[,])=
interface IMatrix with
member t.Item with get((x,y)) = data.[x,y]
and set((x,y)) value = do data.[x,y] <- value
let printCoordinate (x, y) (matrix : #IMatrix) =
printf "%A" matrix.[x, y]
关于.net - 在 .NET (F#) 中使用可替换的后端实现来实现 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241164/
我是一名优秀的程序员,十分优秀!