吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1271|回复: 8
收起左侧

[已解决] [已解决]C#中对象定义为Object时如何获取属性?

[复制链接]
zhanglei1371 发表于 2021-8-5 09:37
本帖最后由 zhanglei1371 于 2021-8-5 10:33 编辑

vba的语句是这样的:
[Visual Basic] 纯文本查看 复制代码
Dim xlapp as object

xlapp=getObject(,"Excel.application")

msgbox xlapp.name


我在C#里这样写:

[C#] 纯文本查看 复制代码
Object xlapp;
 xlapp = Interaction.GetObject(Class: "Excel.application");
 MessageBox.Show(xlapp.Version);



结果就出错了。如下:

Snipaste_2021-08-08_09-34-08.jpg
我的目的:必须将xlapp定义为object(其他的写法也行,但就是不要写为Excel.application,因为可能是WPS)时,
如何访问其内部的各种对象和方法属性等东西呢?

感谢7楼和8楼的朋友,已完美解决!

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

Cool_Breeze 发表于 2021-8-5 09:44
需要类型转换
JuncoJet 发表于 2021-8-5 09:59
C#估计需要定义类型把,猜的没用过
VB的话不需要定义类型随便用,脚本语言
逝去的初夏c 发表于 2021-8-5 10:00
emmm,很明显你这个是Obj类型的啊,你怎么能类名.属性调用呢,必须强转啊。
猫吃 发表于 2021-8-5 10:02
你得强制转换你要什么类型  就转成什么类型
 楼主| zhanglei1371 发表于 2021-8-5 10:03
逝去的初夏c 发表于 2021-8-5 10:00
emmm,很明显你这个是Obj类型的啊,你怎么能类名.属性调用呢,必须强转啊。

代码怎么写呢?能同时适用于wps的情况?
BestTime 发表于 2021-8-5 10:19
本帖最后由 BestTime 于 2021-8-5 10:24 编辑

[C#] 纯文本查看 复制代码
Object xlapp;
 xlapp = Interaction.GetObject(Class: "Excel.application");
if(xlapp is Excel.application app)
{
    MessageBox.Show(app.Version);
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zhanglei1371 + 1 + 1 我很赞同!

查看全部评分

a952135763 发表于 2021-8-5 10:19
本帖最后由 a952135763 于 2021-8-4 23:24 编辑

有引入application就封箱转换一下
[C#] 纯文本查看 复制代码
var xlapp = (application)Interaction.GetObject(Class: "Excel.application");

没有引入application就这样
[C#] 纯文本查看 复制代码
dynamic xlapp = Interaction.GetObject(Class: "Excel.application");

使用dynamic 可以直接访问 你 application有的属性和方法,但是没有智能提示

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zhanglei1371 + 1 + 1 谢谢@Thanks!

查看全部评分

luoye1997 发表于 2021-8-5 10:56
楼主真棒,感谢大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 01:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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