在C#中实现IUnknown

时间:2013-05-23 13:44:43

标签: c# .net interface iunknown

我一直在寻找一个如何在C#中实现IUnknown的例子,但是没有找到任何合适的引用或解决方案。

应该像......一样简单。

public interface IUnknown
{
    UInt32 AddRef();
    UInt32 QueryInterface([In] IntPtr riid, [Out] IntPtr ppvObject);
    UInt32 Release();
}

......或者还有更多吗?

3 个答案:

答案 0 :(得分:7)

为什么要实施IUnknown?这是一个COM接口。如果要与COM进行互操作,请使用.Net / COM桥,为您实现IUnknown。

答案 1 :(得分:2)

[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ISomeInterface
{
   ...
}

此属性执行ISomeInterface:IUnknown {...}

答案 2 :(得分:0)

被问到: {...只是出于兴趣,Direct2D接口,ID2D1Factory继承自IUnknown,所以我可能仍然需要用.NET实现这个接口......我不确定我会在这里做什么。 - 5月24日的系列0和8:51的13 ...} 答案是否定的。从IUnknown派生一个类的重点是,你的类不必实现IUknown为你做的任何事情。它会自动处理QueryInterface和AddRefCount之类的事情。你甚至不用C#或C ++做事。在C ++中,然后是CoCreateInstance(),在C#中,它是Activator.CreateInstance()。