我一直在寻找如何在 C# 中实现IUnknown的示例,但没有找到任何合适的参考或解决方案。
是不是应该这么简单...
public interface IUnknown
{
UInt32 AddRef();
UInt32 QueryInterface([In] IntPtr riid, [Out] IntPtr ppvObject);
UInt32 Release();
}
...或者还有更多吗?
为什么要实现 IUnknown?那是一个COM接口。如果您想与 COM 互操作,请使用为您实现 IUnknown 的 .Net/COM 桥。
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ISomeInterface
{
...
}
此属性执行 ISomeInterface : IUnknown { ... }
被问到:{ ...只是出于兴趣,Direct2D接口,ID2D1Factory继承自IUnknown,所以大概我仍然需要用.NET实现这个接口......我不确定我会在这里做什么。— — series0ne 13 年 5 月 24 日在 8:51 ... } 答案是否定的。从 IUnknown 派生类的全部意义在于,您的类不必实现 IUknown 为您所做的任何事情。它将自动处理诸如 QueryInterface 和 AddRefCount 之类的事情。你甚至不用 C# 或 C++ 做任何事情。在 C++ 中是 CoCreateInstance(),在 C# 中是 Activator.CreateInstance()。