无法从.net Web服务调用COM参数化构造函数 我有一个C++的COM组件,我在WebService中添加了它作为引用(使用互操作)。我的COM组件有一个默认构造函数,它可以从.Net服务中成功调用

无法从.net Web服务调用COM参数化构造函数 我有一个C++的COM组件,我在WebService中添加了它作为引用(使用互操作)。我的COM组件有一个默认构造函数,它可以从.Net服务中成功调用,c++,com,com-interop,C++,Com,Com Interop,但是,当我添加一个参数化构造函数并创建一个在Dot-Net中引用的互操作时,我没有得到参数化构造函数 我执行以下操作 构建COM组件 注册代理存根和dll 创建互操作dll 将其添加为dotnetwebservice中的引用 我缺少什么?添加这样的构造函数没有意义,它永远不会被调用。查看CoCreateInstance()并注意它不接受额外的参数。IClassFactory::CreateInstance()。@HansPassant也一样,因此在Web服务中创建COM组件实例时,我无法传递信息

但是,当我添加一个参数化构造函数并创建一个在Dot-Net中引用的互操作时,我没有得到参数化构造函数

我执行以下操作

  • 构建COM组件
  • 注册代理存根和dll
  • 创建互操作dll
  • 将其添加为dotnetwebservice中的引用

  • 我缺少什么?

    添加这样的构造函数没有意义,它永远不会被调用。查看CoCreateInstance()并注意它不接受额外的参数。IClassFactory::CreateInstance()。@HansPassant也一样,因此在Web服务中创建COM组件实例时,我无法传递信息COM对象没有构造函数。(用于实现对象的任何类都可能有构造函数,但这是不同的。例如,可以用纯C实现对象,尽管这会很痛苦)。您必须使用两阶段初始化来模拟构造函数,如果您喜欢RAII范例,这实际上是非常烦人的。如果您想要参数化构造-没问题,请引入一个工厂对象(带有单独的接口),该对象将具有一个带有所需参数的“创建实例”方法。