2011-08-05 3 views
35

우리가 사용중인 타사 라이브러리에서 다음과 같은 코드를 발견했습니다.C# CoClass 특성은 무엇을 수행합니까?

[CoClass(typeof(BlahClass))] 
public interface Blah : IBlah 
{ 
} 

정확히 무엇을하고 있습니까? msdn 문서는 제가 따라야 할 주제를 충분히 밝히지 않았습니다.

+1

'CoClass'는 COM 개념입니다. 당신이 COM을 이해하지 못한다면, 당신은 CoClass를 이해하지 못할 것입니다. –

+5

이 질문에 대한 토론은 도움이 될 수 있습니다. http://stackoverflow.com/questions/1093536/how-does-the-c-compiler-detect-com-types – rsbarro

답변

52

인터페이스 Blah은 특정 클래스에 의해 구현되도록 고안되었습니다. 즉, 편리하게 new Blah이라고 말하면 런타임에서 어떤 개체를 만들지 알 수 있습니다. 인터페이스에서는 일반적으로 불가능한 작업입니다.

생성 된 BlahClass 선언을 보면 아마도 COM 개체의 인스턴스를 만드는 데 사용할 수있는 Guid이 연결되어있을 것입니다.

+0

좋아, 내가보기에는 그것이 당연한 것 같다. 주변 코드에서. 감사! COM 외에도 인터페이스를 구현하는 것과 비교하여이 방법에 이점이 있습니까? –

+0

@RobertGowland 귀하의 의견에 대한 답변이 필요합니다. 이 클래스를 구현하거나 인터페이스가 충분하다고 선언하는 것이 nessecary입니까? – Rikki

+1

@MohammadGoudarzi 속성'[CoClass (typeof (BlahClass)]'는 클래스 'BlahClass'를 언급하므로 클래스가 어딘가에 존재해야합니다. 그리고 인터페이스 'Blah'를 구현해야합니다. COM 타입 라이브러리에서 생성 된 interop 어셈블리에서,'BlahClass'는 실제로 COM 객체입니다 (아마도 C++, VB6, Delphi 또는 다른 어떤 것으로 구현 될 수 있습니다 ...) –

관련 문제