
C#通过反射调用金蝶登录界面及使用指南
5星
- 浏览量: 0
- 大小:None
- 文件类型:TXT
简介:
本指南详细介绍了如何运用C#编程语言中的反射机制来访问和操作金蝶软件的登录界面,旨在帮助开发者深入了解与应用这一技术手段。适合有一定C#基础并熟悉金蝶系统的用户参考学习。
### C#调用金蝶登录界面(反射)及使用说明
#### 一、概述
本段落档详细介绍了如何在C#程序中通过反射技术来调用金蝶软件的登录界面,并解析获取到的一些关键信息,如账户名、用户名、用户ID以及数据库连接字符串等。
#### 二、反射简介
.NET框架中的反射特性允许我们动态地获取类型的信息并操作这些类型。本案例中我们将使用该特性通过COM接口与金蝶系统进行交互。
#### 三、代码解析
##### 1. 类定义与成员变量初始化
```csharp
public class KingdeeLogin {
private object _kingdeeLoginObject;
private Type _kingdeeLoginType;
private string _sqlConnectionString;
private string _accountName;
private string _userName;
private int _userId;
public KingdeeLogin() {
_kingdeeLoginType = Type.GetTypeFromProgID(K3Login.ClsLogin, true);
_kingdeeLoginObject = Activator.CreateInstance(_kingdeeLoginType);
// 初始化其他成员变量
}
}
```
在这个类中,我们定义了一些私有成员变量来存储与金蝶登录对象有关的信息。通过`GetTypeFromProgID`方法获取金蝶登录组件的类型,并使用`Activator.CreateInstance`创建该类型的实例。
##### 2. 登录验证
```csharp
public bool CheckLogin() {
var result = _kingdeeLoginType.InvokeMember(CheckLogin,
BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,
null, _kingdeeLoginObject, null);
bool bResult = (bool)result;
if(bResult)
InitialLoginDatas();
return bResult;
}
```
该方法用于执行登录验证。使用`InvokeMember`调用金蝶登录组件的`CheckLogin`方法,并根据返回值判断是否成功登陆,若成功则初始化数据。
##### 3. 初始化登录数据
```csharp
private void InitialLoginDatas() {
string kingdeePropString = _kingdeeLoginType.InvokeMember(PropsString,
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public,
null, _kingdeeLoginObject, null).ToString();
_accountName = _kingdeeLoginType.InvokeMember(AcctName,
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public,
null, _kingdeeLoginObject, null).ToString();
ParsePropStringToField(kingdeePropString);
}
```
此方法用于获取登录后的属性字符串和账户名称,然后调用`ParsePropStringToField`方法解析这些信息。
##### 4. 属性字符串解析
```csharp
private void ParsePropStringToField(string propString) {
var datas = ReadPropStringToDictinary(propString);
_userName = GetValueFromDictionay(UserName, datas);
_userId = int.Parse(GetValueFromDictionay(UserID, datas));
_sqlConnectionString = ConvertSqlConnectionString(GetValueFromDictionay(ConnectString, datas));
}
```
在这个方法中,首先将属性字符串转换为字典形式,并从其中获取用户名、用户ID和数据库连接字符串。
##### 5. 字典操作与SQL连接字符串转换
虽然原文中的这部分代码不完整,但可以推测出其主要功能是读取字典中的值以及将OLE DB格式的连接字符串转化为适用于SQL Server的格式。
```csharp
private string GetValueFromDictionay(string key, Dictionary
全部评论 (0)


