我想我可以编译一个C#DLL,然后将它作为COM对象公开,以便它可以从VBscript创建.我只是不确定这样做的步骤……
解决方法
这样做非常简单.但是有很多地方并不那么简单.这很大程度上取决于您的课程需要做什么,以及您打算如何部署它.
需要考虑的一些问题:
>你的班级必须有一个无参数的构造函数.
>它不能暴露静态方法.
>是在全局程序集缓存中部署COM DLL吗?如果没有,您将不得不给它一个强名称并使用regasm / codebase注册它.
>您是否关心GUID识别类及其接口的内容?如果没有,你可以让regasm分配它们,但是每次(和每个地方)这个类都注册时它们会有所不同.如果您需要GUID在安装期间保持不变,则需要使用Guid属性标记成员.
>您打算在.NET和COM之间使用默认的数据类型封送吗?如果没有,您将需要使用MarshalAs属性标记属性和方法.
>你的班级暴露什么样的COM接口对你有用吗?如果是这样,您将需要处理InterfaceType属性.
>您的班级是否需要筹集或回应活动?如果是这样,那么对您设计类接口的方式有影响.
有一篇关于COM互操作和.Net here的非常好的(如果注明日期)文章.(文章谈到的很多内容,比如生成类型库,现在都会自动处理.)而且Microsoft’s documentation是最新的,但并不完全如此详细.