WinRT는 COM 개념을 발전시킨 것으로, 우리가 이진 구성 요소에 대해 이야기하고 소스 상속에 대해 이야기하지 않는 것과는 아주 다른 이야기입니다. 이 ABI 이야기에서 가장 중요한 것은 사용할 수있는 구성 요소의 유일한 것들이 인터페이스를 통해 노출되는 것들이라는 것입니다. 생성자를 인터페이스에 정의하거나 정적으로 지정할 수 없기 때문에 WinRT는 이러한 인터페이스도 필요합니다.
WinRT 구성 요소의 C# 뷰는 언어 프로젝션의 아티팩트이며 구성 요소의 실제 레이아웃이 아닙니다. 거기에 무엇이 있는지 완전히 이해하려면 WinRT API를 작성하는 데 사용되는 라이브러리 인 기본 라이브러리 WRL을 사용하여 C++의 구성 요소를 살펴보아야합니다.
생성자는 WinRT 구성 요소의 팩토리 인터페이스에 대한 투영입니다 (WinRT 구성 요소가 COM에 존재하지 않았으므로 WinRT에 익숙하지 않은 유사한 처리 방법이 있음).
C# 개체에서 "새로 만들기"를 선택하면 해당 구성 요소와 연결된 팩터 리 구성 요소가 먼저 만들어집니다. 그런 다음 팩토리가 객체를 만듭니다. 이런 이유로 생성자 질문은 팩토리 구성 요소의 관점에서보아야하며 구성 요소의 관점에서 보지 않아야합니다 (기본 구현에 존재하지만 실제로 구성 요소의 내용은 바이너리 계약 인 ABI).
다른 옵션이 있습니다. 1. 팩토리가없고 구성 요소를 만들 수 없습니다. Factory 인터페이스가 내부 인터페이스 인 경우 사용할 수 없으며 객체를 만들 수 없습니다. 2. 팩토리가 존재하고 기본 생성자를 노출합니다. C#에서는 객체를 새로 만들 수 있습니다. 3. 사용자 정의 팩토리가 존재하며 사용자 정의 생성자 (부엉 매개 변수)를 노출합니다.
ITransformFactory는 비공개이며 내가 본 행동을 설명한다고 생각합니다.
WinRT 어 그리 게이션은 이진 상속 및 버전 관리를 제공하는 방식이므로이 주제가 훨씬 더 많습니다. 그러나이 주제는 또 다른 (매우 긴) 이야기입니다. HTTP : // 유래
아직도 파고, 그리고 멈추지 않을 것입니다 결코, 그것은 우리의 일 :) 도움이된다면
출처
2012-08-30 12:09:56
raf
날이 살펴보고 이야기의 재미 부분입니다.com/questions/3763612/default-visibility-for-c-sharp-classes-and-members-fields-methods-etc – turibbio