C#写的COM在VBS调用时重载问题,寻求更好的解决办法
先写几个测试函数如下
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#里面再去做判断和强制转换么?