前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >从 VFP 的角度看 .NET 中的依赖注入和接口(1)

从 VFP 的角度看 .NET 中的依赖注入和接口(1)

作者头像
firstxinjie
发布2025-03-31 19:27:07
发布2025-03-31 19:27:07
6400
代码可运行
举报
文章被收录于专栏:X#(XSharp)X#(XSharp)
运行总次数:0
代码可运行

学习 X# 的时候,接触到依赖注入和接口的概念。对于 VFP 技术背景的开发人员来说,这些是全新的概念。如果不亲自下手尝试很难理解它们到底是什么意思。这里尝试着从 VFP 的角度来阐述它们的大概意思。

在使用 VFP 的过程中,假设你需要创建一个连接类,它用于建立和远程数据库的连接。针对建立连接的方法,常规来说,远程数据库大概率是 SQL Server,那么代码大致是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
Define Class MyWork As Custom
	*!* 连接句柄属性,初始值为 -1,表示未连接
	nStatementHandle = -1

	Procedure Init(tType As Number)
		This.nStatementHandle = This.CreatConnection()
	EndProc

	*!* 创建数据库连接
	Procedure CreatConnection() As Number
		Local cConnectString As String, nStatementHandle As Number
               m.cConnectString	= "Driver={SQL Server};UID=sa;PWD=你的密码;Server=你的IP地址;Database=你的数据库"
		m.nStatementHandle	= Sqlstringconnect(m.cConnectString, .T.)

		Return m.nStatementHandle
	Endproc
Enddefine

作为特定用途来说,这似乎足够了。

但是,如果你想使它也适应于 MySQL,那么,你大概率是这样设计:

代码语言:javascript
代码运行次数:0
运行
复制
Define Class MyWork As Custom
	*!* 连接句柄属性,初始值为 -1,表示未连接
	nStatementHandle = -1

	Procedure Init(tType As Number)
		This.nStatementHandle = This.CreatConnection(m.tType)
	EndProc

	*!* 创建数据库连接
	Procedure CreatConnection(tType as Number) As Number
		Local cConnectString As String, nStatementHandle As Number

		Do Case
			Case tType = 1		&& SQL Server 数据库
				m.cConnectString	= "Driver={SQL Server};UID=sa;PWD=你的密码;Server=你的IP地址;Database=你的数据库"

			Case tType = 2		&& MySQL 数据库
				m.cConnectString	= "Driver={MySQL ODBC 8.0 ANSI Driver};UID=root;PWD=你的密码;Server=你的IP地址;Database=你的数据库;Port=你的端口"
		EndCase

		m.nStatementHandle	= Sqlstringconnect(m.cConnectString, .T.)

		Return m.nStatementHandle
	Endproc
Enddefine

到这个状态还算可以。已经可以连接到两种数据库。但是,如果需求还需要连接到 Access 数据库、Oracle 数据库、PostgreSQL 数据库......情况似乎会变得复杂一些......如果是其他功能有类似的需求呢?例如,你需要从不同的文档格式中读取内容。

"那还不简单啊,加 Case 分支啊......"

可能这是大多数 VFP 开发人员都是这个想法。但是,这可能就是“屎山”的雏形......

到底有没有办法来解决这个问题呢?下回分解!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档