我一直在寻找如何在c#中实现IUnknown的示例,但没有找到任何像样的参考或解决方案。
应该像……那么简单吗?
public interface IUnknown
{
UInt32 AddRef();
UInt32 QueryInterface([In] IntPtr riid, [Out] IntPtr ppvObject);
UInt32 Release();
}
…或者还有更多的原因?
为什么要实现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()。