2013-05-23 19 views
3

IUnknown을 C#으로 구현하는 방법에 대한 예제를 찾고 있었지만 이에 대한 적절한 참조 나 해결책을 찾지 못했습니다.C#에서 IUnknown 구현

그것은 ...

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

것처럼 간단 할 수 ... 또는 거기 더해야 하는가?

+1

AFAIK'IUnknown'은 C#에서 암시 적으로 구현됩니다. –

+4

목표는 무엇입니까? IUnknown은 COM-interop에 의해 자동으로 구현됩니다. 아무 것도 할 필요가 없습니다. –

+0

@JordanParmer, 나는 이것을 알지 못했다. (나는 지금 :-)). 나는 인터페이스 (C++)를 구현하여 IUnknown을 구현 했으므로 C++ COM 인터페이스에서 IUnnkown을 상속하는 방법을 알지 못했습니다. (이해가된다면) ... – series0ne

답변

6

왜 IUnknown을 구현 하시겠습니까? 그것은 COM 인터페이스입니다. COM과 상호 운용하려면 IUnknown을 구현하는 .Net/COM 브리지를 사용하십시오.

+0

Direct2D 인터페이스 인 ID2D1Factory는 다음으로부터 상속받습니다. IUnknown, 아마도 아마도이 인터페이스를 .NET과 함께 구현해야 할 필요가있을 것입니다 ... 내가 여기서 정확히 무엇을 할 것인지 확신 할 수 없습니다. – series0ne

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

이 속성은하지 ISomeInterface :

0

질문의 IUnknown {...}했다 : 그냥 관심 밖으로, Direct2D의 인터페이스는, ID2D1Factory 그래서 아마도 난 여전히 것, IUnknown로부터 상속

. NET 에서이 인터페이스를 구현해야합니다 ... 나는 내가 정확히 여기서 어떻게 해야할지 모르겠다. - series0ne 5 월 24 일 13시 8시 51 분

그리고 대답은 아니오입니다.

Unknown에서 클래스를 파생시키는 전체 요점은 클래스가 아무 것도 구현하지 않아도되기 때문에 IUknown을 구현할 수 있습니다. QueryInterfaceAddRefCount과 같은 것들을 자동으로 처리합니다. 너는 C# 또는 C++조차하지 않는다. C++에는 CoCreateInstance(), C#에는 Activator.CreateInstance()입니다.