DTSearch COM互操作 - 如何将对象暴露给C#?

3
我知道我在这里冒险了。我不知道是否能得到任何帮助。但是,这就是问题所在。
我工作的公司拥有一份完全授权的,虽然有点老旧的DTSearch开发者副本,其中包括C++源代码。他们在我正在更新的应用程序中使用它。我被告知要在当前正在开发的C#添加中使用它。然而,我没有.NET程序集,他们因某种原因拒绝实施它。
因此,我可以轻松地在对象浏览器中查看dtengine,并且有许多可爱的对象等待着我使用它们。但是它们中的任何一个都无法实例化。尝试这样做会得到“'dtengine.SearchJobClass'无法嵌入。请改用适当的接口。”的错误信息。
还有很多接口,我可以轻松地实现其中的任何一个。问题是,“throw new NotImplementedException”并不能解决我的搜索问题。
有人有什么线索吗?

你解决了你的问题吗? - Frank Hale
我不知道你使用的版本有多旧,但是当前的dtsearch版本都带有一个dotnet包装器。也许你应该说服他们升级。 - mosheb
我没能说服他们升级。 - dogged
最终,我成功地实现了一个空的C#服务,并在其后面使用了一个C++实现层,其中包含从之前尝试中提取的代码 - 根据注释,这些代码可以追溯到2003年 - 以使用dtSearch引擎。这有一些缺点,我不得不依靠试错来缩小所需参数并产生类似准确结果的东西 - 在索引搜索中使用通配符是一场噩梦!我仍然对最终结果不满意,但至少它是功能性的。 - dogged
1个回答

0

我使用了一些需要像这样实例化的 COM 对象:

Foo f = new FooClass();

DTSearch是否有类似的类名?

我也相信COM接口是特殊的,你可以通过它的接口实例化一个COM对象,但我很难找到好的例子。

我找到了这个:

http://www.codeproject.com/KB/COM/COMBasics.aspx

请注意,如果您向下滚动,您将看到它们以特殊方式实例化接口。我不是说这是一个解决方案,但它可能有助于您调查如何在应用程序中使用DTSearch COM包装器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接