在c#中实现未知

本文关键字:未知 实现 | 更新日期: 2023-09-27 18:15:06

我一直在寻找如何在c#中实现IUnknown的示例,但没有找到任何像样的参考或解决方案。

应该像……那么简单吗?

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

…或者还有更多的原因?

在c#中实现未知

为什么要实现IUnknown?这是一个COM接口。如果你想与COM互操作,使用。net/COM桥,它为你实现了IUnknown。

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

ISomeInterface: IUnknown{…}

被问到:{…只是出于兴趣,Direct2D接口,ID2D1Factory继承自IUnknown,所以大概我仍然需要用。net实现这个接口…我不确定我在这里会做什么。- series0ne May 24 '13 at 8:51…}答案是否定的。从IUnknown派生类的全部意义在于,您的类不必实现IUnknown为您所做的任何事情。它会自动处理QueryInterface和AddRefCount之类的事情。你甚至不用在c#或c++中做任何事情。在c++中,您可以使用CoCreateInstance(),而在c#中,它是Activator.CreateInstance()。