C#写的COM在VBS调用时重载问题,寻求更好的解决办法

axinxkx 2009-02-20 06:17:02
先写几个测试函数如下

public string ASD(string a, string b)
{
return string.Format("字符串a:{0},字符串b:{1}",a,b);
}
public string ASD(string a, int b)
{
return string.Format("字符串a:{0},数字b:{1}", a, b);
}
public string ASD(int a, string b)
{
return string.Format("数字a:{0},字符串b:{1}", a, b);
}
public string ASD(int a, int b)
{
return string.Format("数字a:{0},数字b:{1}", a, b);
}
----------------------------
然后在.Net中这个是毫无问题的,调用相应的方法传相应的参数,都能正常输出。

Console.WriteLine(ASD(1, 2));
Console.WriteLine(ASD(12,"786"));
Console.WriteLine(ASD("254", 2));
Console.WriteLine(ASD("987", "789"));

---------------输出
数字a:1,数字b:2
数字a:12,字符串b:786
字符串a:254,数字b:2
字符串a:987,字符串b:789

----------------
然后在 ASP 中调用的时候,就出大问题了

Dim Users,result
Set Users=Server.CreateObject("xxxx")
result=Users.ASD(2424,87542)

----------------上面这个理论上应该输出数字的,结果不管怎么用输出的都是 字符串,无法实现重载
result=Users.ASD(CInt(2424),CInt(87542))
result=Users.ASD(CLng(2424),CLng(87542))
------------------ 君无用
response.Write(result+"<br />")
全部都是,求高人指点指点如何实现这个重载。

难道只能都改成接口为 string 类型,然后在C#里面再去做判断和强制转换么?
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangniao 2009-04-14
  • 打赏
  • 举报
回复
你这个应该是vb。net 大致意思看明白了,感觉你好像没有实例化你写的这个测试者个页面
我vb不懂,
如果是c#的话,如果你是不在当前页面中调用这些函数的话,这些函数写在以个类里边比较好,如果你是在当前页面中调用的话,就不用实例化,直接写 ASD。()这个样子,vb。net应该也有类吧
你新建一个类,然后把测试的代码放到类里边,比如说你新建的类的名字为aa。cs 调用的时候用法是这样的 aa bb=new aa();
bb就是实例化的一个
然后调用的时候直接用bb。ASD(参数一,参数二) 你看下着样行不行,
yzl624358 2009-02-25
  • 打赏
  • 举报
回复
顶,学习了!
axinxkx 2009-02-20
  • 打赏
  • 举报
回复
-----------------------
字符串a:2424,字符串b:87542
---------补充,VBS中,不管怎么转换,结果总是这个。。。。

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧