꽤 from MSDN 다음하지 않았다 : ClassInterfaceType.None의 필요성?
ClassInterfaceType.None
더 클래스 인터페이스는 클래스에 대해 생성 없음을 나타냅니다. 인터페이스가 명시 적으로 구현되지 않은 경우 클래스는
IDispatch
인터페이스를 통해 늦은 접속 액세스 만 제공 할 수 있습니다.ClassInterfaceAttribute
에 대해 으로 설정하는 것이 좋습니다. 을 사용하면 인터페이스를 통해 기능을 노출하는 유일한 방법은 클래스에 의해 명시 적으로 구현되었습니다.[ComVisible(true)]
은 COM 가시성을 위해 필수입니까?
2
A
답변
7
첫 번째 문제의 설명은 this blog post을 참조하십시오. 요점은 ClassInterfaceType.None
을 지정하지 않으면 여분의 인터페이스가 생성되고 메서드의 순서를 변경하거나 서명을 변경하거나 그 중 일부를 제거하면 이진 호환성 문제가 발생할 수 있다는 것입니다. 훨씬 더 나은 대안은 명시 적으로 인터페이스를 정의하고 클래스를 상속 받아 ClassInterfaceType.None
을 지정하는 것입니다.
ComVisible(true)
은 COM 가시성을위한 필수 요소는 아닙니다. 기본적으로 public 클래스의 모든 public 메서드와 모든 public 클래스는 COM으로 표시되며 다른 모든 엔터티는 COM으로 표시되지 않습니다. 이를 변경하려면 ComVisible 속성을 사용하십시오. 일반적으로 COM 표시 클래스의 수를 줄이려면 모든 COM 표시 클래스 레지스트리 항목과 유형 라이브러리 항목이 생성되므로 불필요한 레지스트리 오염이 발생하고 유형 라이브러리가 부 풀립니다. IMO 모든 공개 엔티티에 ComVisible을 명시 적으로 표시하는 것이 좋습니다.
관련 문제
- 1. '이벤트의 필요성
- 2. jQuery에서 .ready()의 필요성
- 3. xmlElement 파서 필요성 C#
- 4. 가상 멤버 함수 필요성
- 5. 인터페이스의 필요성, 고유 프로젝트의 주입
- 6. 방문자 패턴, 캐스팅의 필요성 제거
- 7. Delphi 이진/텍스트 파일 필요성
- 8. WCF에서 매개 변수의 필요성 지정
- 9. "new"에 대한 필요성 제거
- 10. 유니폼 브라우저 엔진에 대한 필요성
- 11. "메인"에 대한 필요성 (자바)
- 12. PHP 네임 스페이스 및 필요성
- 13. 앞으로 선언 템플릿 함수의 필요성
- 14. Rails 플러그인 관리 도구의 필요성?
- 15. 리팩토링과 병합의 필요성 사이의 긴장감을 어떻게 처리합니까?
- 16. MySQL -`(tickmarks)로 둘러싼 테이블 이름의 필요성?
- 17. C/C++ API를 생성하는 PRBS 패턴의 필요성
- 18. XML-직렬화 및 필요성 공유 재산
- 19. mysql 쿼리에 대한 정적 캐시의 필요성?
- 20. 무슨 자바 추상 클래스와 인터페이스의 필요성
- 21. 모든 코드 개정판에 라이센스 정보가 있어야 할 필요성
- 22. 무엇이 자바 배열의 주요 방법으로 문자열 배열의 필요성
- 23. PHP 메일 기능, 오류 - 헤더에 대한 필요성 제거
- 24. PHP에서 얻는 방법의 필요성, JAVA ot Dot NET, POST를 통해 얻는 많은 이점이있을 때?
- 25. ggplot2에서 플롯의 이중 수평 축을 만드는 방법은 무엇입니까?
- 26. MATLAB 테스팅 프레임 워크
- 27. 4면 다각형 (사각형이 아님) 충돌 감지를 식별하는 방법은 무엇입니까?
- 28. IDictionary 인터페이스의 용도
- 29. 차이 (++ i) 및 (내가 ++) C에서
- 30. TeamCity 대 BuildForge