【问题标题】:DTSearch COM Interop - How do I expose objects to C#?DTSearch COM Interop - 如何向 C# 公开对象?
【发布时间】:2011-02-24 17:23:15
【问题描述】:

我知道,我在这里赌一把。我不知道我是否可以在这方面得到帮助。但是,这就是问题所在。

我工作的公司拥有 DTSearch 的完全许可(如果是旧的)开发人员副本,包括 C++ 源代码。他们在我正在更新的应用程序中使用它。我被告知要在当前正在开发的该应用程序的 C# 附加功能中使用它。但是,我没有 .NET 程序集,他们出于某种原因拒绝实现它。

所以,我可以在对象浏览器中轻松查看 dtengine,并且有很多可爱的对象等着我使用它们。但是它们都不会实例化。尝试它会得到我

'dtengine.SearchJobClass' 无法嵌入。请改用适用的接口。

还有很多接口,我可以轻松实现其中任何一个。麻烦的是,“抛出新的 NotImplementedException”并不能完全完成我的搜索。

有人有线索吗?

【问题讨论】:

  • 您找到问题的答案了吗?
  • 我不知道您的版本有多旧,但当前版本的 dtsearch 带有 dotnet 包装器。也许你应该说服他们升级。
  • 我未能说服他们升级。
  • @Frank-Hale 最终,我设法实现了一个空白的 C# 服务,其背后有一个 C++ 实现层,使用从以前的尝试中提取的代码——根据 cmets 的日期为 2003 年——使用 dtSearch 引擎。这有许多障碍,我不得不依靠反复试验来缩小所需参数的范围并产生任何类似准确结果的东西——索引搜索中的通配符是一场噩梦!我仍然对最终结果不满意,但它至少可以正常工作。

标签: c# interop dtsearch


【解决方案1】:

我使用了一些你必须像这样实例化的 COM 对象:

Foo f = new FooClass();

DTSearch 是否有相似的类名?

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

我确实找到了这个:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2012-05-02
    • 2010-11-14
    • 2021-06-02
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2012-09-20
    相关资源
    最近更新 更多