自定义或.Net类作为COM参数或输出

时间:2010-10-21 20:09:54

标签: .net com interop

任何人都可以向我指出一个示例,该示例演示如何从作为COM公开的.NET类传递和/或返回类。 COM消费者将是VBScript。此外,可以将对象从VBScript传递给.NET-COM公开的方法吗?例如

[ComVisible(true)]
public class A
{
       public SomeClass MethodName(NameValueCollection param)
       {
           return new SomeClass();
       }
}

如何在VBScript(ASP)中调用MethodName

谢谢!

2 个答案:

答案 0 :(得分:2)

我不认为NameValueCollection被标记为ComVisible,所以我怀疑没有。

答案 1 :(得分:0)

在VBScript中,创建和使用对象......


set obj= CreateObject("your.fully.qualified.com.classname")
obj.Do_Some_Method(some_obj_param, another_obj_param)
obj.Some_Property = anything

来回传递任何类型值的唯一因素是:a)你的COM类如何translate them back and forth;和b)您的消费/客户语言如何来回翻译。对象是对象。但从根本上说,您创建,调用或分配的COM类必须正确设置和注册其接口。并且(我认为)使用CreateObject()创建的任何对象必须实现几个属性之一,将其公开给COM,以便能够使用其任何方法或访问其属性。即ComVisible(true)属性。

你会发现大多数.Net默认类使用COM都不能完全调用,即使在文档中另有标记(可能是因为你的消费者/客户端语言无法处理它或者它实际上不是COM可调用的),因此你必须自己制作custom COM Callable Wrapper