다음을 통해 공유


SafeHandle 형식에는 공용 생성자가 있어야 합니다.

지금까지 SafeHandle 파생 형식을 P/Invokes 및 COM 메서드에 전달하려면 SafeHandle 파생 형식이 ref 또는 out 매개 변수 또는 반환 형식으로 전달될 때 표시 유형이 있는 매개 변수가 없는 생성자가 암시적으로 필요했습니다. .NET 7에서 원본에서 생성된 interop을 사용하면 이 동작을 통해 DllImportAttribute 기반 P/Invokes에서 더 쉽게 마이그레이션할 수 있습니다. 동시에 구현자에게 파생 형식으로 public 매개 변수가 없는 생성자를 제공하도록 SafeHandle 설명서를 업데이트했습니다. 이러한 호환성이 손상되는 변경으로 인해 해당 권장 사항은 원본 생성 마샬링에 대한 요구 사항입니다.

이전 동작

SafeHandle 파생 형식은 사용될 때 모든 가시성의 매개 변수가 없는 생성자를 가져야 했습니다.

새 동작

SafeHandle 파생 형식은 public 매개 변수가 없는 생성자를 사용해야 합니다.

형식에 public 매개 변수가 없는 생성자가 없는 경우 interop 소스 생성기는 컴파일 오류를 내보낸다.

도입된 버전

.NET 8 미리 보기 5

호환성이 손상되는 변경의 형식

이 변경은 소스 호환성에 영향을 줄 수 있습니다.

변경 이유

interop 소스 생성기는 원본 생성기 자체에서 핵심 .NET 라이브러리로 더 많은 코드를 푸시하도록 변경되고 있습니다. 이 변경의 일환으로 interop 팀은 유지 관리가 용이하고 이해할 수 있는 interop 코드에 대한 권장 지침을 적용하기 시작했습니다.

SafeHandle 파생 형식에서 public이(가) 아닌 기존 매개 변수가 없는 생성자를 public(으)로 변경합니다.

영향을 받는 API