吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 199|回复: 1
收起左侧

[求助] 求用友U8CO反射开发方式

[复制链接]
haichao118 发表于 2025-3-15 11:59
求用友U8CO反射开发方式,不需要引用DLL的开发方式。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Aircus 发表于 2025-3-16 22:32
1. 环境搭建
安装U8运行环境:确保U8客户端已安装,并且COM组件已正确注册。
开发工具选择:推荐使用支持COM互操作的开发工具,如Visual Studio。
2. 动态加载U8 COM组件
通过反射动态加载U8的COM组件,避免直接引用DLL。以下是C#中的实现方式:
[C#] 纯文本查看 复制代码
1
2
3
4
// 获取COM组件的类型
Type u8LoginType = Type.GetTypeFromProgID("U8Login.clsLogin");
// 创建COM组件的实例
object u8Login = Activator.CreateInstance(u8LoginType);

这种方式的优点是不依赖具体的DLL版本,可以在不同版本的U8中通用。
3. 调用COM组件的方法
通过反射调用COM组件的方法,例如登录U8系统:
[C#] 纯文本查看 复制代码
1
2
// 调用登录方法
u8LoginType.InvokeMember("Login", BindingFlags.InvokeMethod, null, u8Login, new object[] { "用户名", "密码", "账套号" });

在调用过程中,需要根据U8的COM组件文档了解方法名称和参数。
4. 操作单据
通过反射调用单据的CO接口,例如操作采购订单:
[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
// 获取采购订单的CO类
Type coType = Type.GetTypeFromProgID("VoucherCO_PU.clsVoucherCO_PUClass");
object co = Activator.CreateInstance(coType);
 
// 初始化CO类
coType.InvokeMember("Init", BindingFlags.InvokeMethod, null, co, new object[] { u8Login });
 
// 构造DOM文档作为参数
MSXML2.DOMDocument domHead = new MSXML2.DOMDocument();
MSXML2.DOMDocument domBody = new MSXML2.DOMDocument();
 
// 调用单据保存方法
string result = (string)coType.InvokeMember("VoucherSave", BindingFlags.InvokeMethod, null, co, new object[] { domHead, domBody, 2 });
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-3-17 07:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表