【问题标题】:Creating IStream object in C#在 C# 中创建 IStream 对象
【发布时间】:2012-10-16 07:47:19
【问题描述】:

我正在编写一个项目并使用另一方 DLL。

他们的 DLL 中的函数想要一个 IStream 对象来保存结果,但我不明白如何创建一个 IStream 对象。

谁能帮我解决我的问题?

【问题讨论】:

标签: c# com com-interop


【解决方案1】:

您不创建 IStream 对象,因为它显然是一个接口。您应该实现此接口并传递您的对象。或者干脆使用一个已经实现它的对象,如果这样的对象存在的话。

已经给出了类似问题的答案,给出了一个很好的例子,如何在 C# 中使用 IStream 接口。

Does a wrapper class for a COM interop IStream already exist?

更正: 但是,这仅在您需要在应用程序中使用现有的 IStream 时才有效,而不是当您需要在其他地方创建和传递 IStream 时。对于该任务,请参阅this for refence 如何执行此操作:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa380034(v=vs.85).aspx

这是来自 Microsoft 的示例(用于 XmlLite,不确定是否适合您)

http://msdn.microsoft.com/en-us/library/windows/desktop/ms752876(v=vs.85).aspx

或者也许这个例子已经由 Marcus 发布: http://hl7connect.blogspot.sk/2010/04/c-implementation-of-istream.html

最后一个链接展示了如何使用任何 Stream 来实现 IStream 接口。

【讨论】:

  • 那么我可以创建一个 MemoryStream 对象并将其发送给函数吗?
  • @IgorRyzhov,MemoryStream 没有实现 IStream,而是 Stream。那是行不通的。您可以使用任何对象,但它需要实现与函数中指定的完全相同的接口。
  • @walther,我明白了,谢谢。但是是否有任何 C# 内置类可以实现 IStream 或者我应该自己编写?
  • @IgorRyzhov,看这里:stackoverflow.com/questions/2586159/…
  • @walther,我读过,但它实现了 Stream,而不是 IStream,不是吗?
【解决方案2】:

【讨论】:

    【解决方案3】:

    Implement your own stream class and inherit the IStream interface。 IStream 只是一个流,只要它是一个流(例如 FileStream 等),几乎可以是您决定的样子

    相关:link

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2015-07-03
      • 2016-12-14
      • 1970-01-01
      相关资源
      最近更新 更多