>

VS 컴파일러는 WINMD 형식 라이브러리에 대해 노출 된 노출 형식을 만들 수 없습니다.

이 제한이 적용되는 이유는 무엇입니까? (봉인 된 유형의 장점에 대해 알고 있습니다. 제 질문은 Win RT 구성 요소와 관련이 있습니다.)


  • 답변 # 1

    이것은 COM에 의해 부과 된 아키텍처 제한입니다. 모든 WinRT 유형의 핵심에 위치하며 IUnknown 및 IInspectable에서 파생됩니다. COM의 문제점은 인터페이스 상속 만 지원하지만 구현 상속은 지원하지 않는다는 것입니다. 강력한 COM 디자인 목표였던 구현 상속은 악명 높은 다이아몬드 문제를 포함하여 구현 세부 정보로 가득 차 있습니다.

    위임으로 상속 작업을 수행하는 방법이 있습니다. 파생 클래스의 각 메서드는 해당 기본 인터페이스 메서드를 명시 적으로 호출하지만 직접 수행하기가 매우 어렵습니다. 그러나 그렇지 않으면 Windows.UI.Xaml 클래스가 상속을 구현하는 방식입니다.

  • 답변 # 2

    이유는 노출 된 유형을 모든 다른 종류의 언어 (C #, C ++, JavaScript)에서 사용할 수 있어야한다고 생각합니다. 미래).

    따라서 클래스가 있다면 클래스를 사용하는 것 중 하나가 클래스를 새 클래스로 재정의하는 것입니다. 나는 다른 언어로 수업을 무시하고 싶었다. 그러나 이것은 문제입니다. C ++에서 수행 한 상속 클래스에 의해 C #에서 수행 된 기본 클래스를 어떻게 재정의 하시겠습니까? 둘 다 완전히 다르고 호환되지 않는 OOP 구현이 있기 때문에 작동하지 않습니다.

    노출 된 클래스를 강제로 봉인함으로써이 문제를 제거하고 사람들이 이런 식으로 시도하지 않도록하십시오.

    이보다 훨씬 더 근본적인 것들이 있다고 확신하지만 이것이 내 마음에 먼저 온 것입니다.

  • 이전 emacs - '잘못된 유형 인수 - characterp, 134217782'를 수정하는 방법?
  • 다음 c# - sitecore의 lucene 검색 색인에서 선택적으로 항목 제외 - indexviewer로 재 구축 할 때 작동하지만 sitecore의 내장 도구를 사용할 때는 작동하지 않습니다