C # 9.0 레코드-반사 및 일반 제약

Kofifus

새 레코드 기능에 대한 두 가지 질문 :

  1. 반사를 사용하여 레코드를 어떻게 인식합니까? [여기] [1]을 (를) 감지하는 방법이있을 수 EqualityContract있지만 그 방법이 맞는지 확실하지 않습니다.

  2. 제네릭 유형이 레코드라는 제네릭 제약 조건을 가질 수 있습니까? 즉, 유형 매개 변수 T가 제약 조건을 사용하는 레코드 클래스 여야한다는 것을 나타낼 수 있다면?

Kofifus

반사를 사용하여 레코드를 어떻게 인식합니까?

여기여기에서 지적했듯이

이 작업을 수행하는 공식적인 방법이있을뿐만 아니라 기능의 디자인에 명시 적으로 위배됩니다. 레코드의 의도는 C # 10을 사용하면 클래스를 레코드로 만드는 것이 순전히 편리한 선택이며 기능의 다른 모든 부분이 어떤 형태의 구문을 통해 달성 될 수있는 지점에 도달하는 것입니다. 레코드에서 클래스로 유형을 변경하는 것이 획기적인 변경이어서는 안되며, IDE 리팩토링이 클라이언트가 알지 못하는 사이에 레코드 구문간에 유형을 자동으로 이동할 수 있다고 상상할 수도 있습니다. C # 9의 경우이를 달성하지 못한 곳이 있지만 그것이 목표입니다.

에도 불구하고 위의 한 유형이 자동으로 생성이 있는지 확인하는 명확한 방법이 아니므로 Equals하고 GetHashCode위의 내 목표는 유형의 기록입니다 여부를 결정하지 않고 달성 할 수없는이. 여기에 대한 공개 요청이 있습니다.

업무용 ATM 기록을 탐지하는 몇 가지 hackish 방법은 다음과 같습니다.

  1. 이 생길 수 있는지 확인 EqualityContract부동산의 CompilerGenerated속성
isRecord = ((TypeInfo)t).DeclaredProperties.Where(x => x.Name == "EqualityContract").FirstOrDefault()?.GetMethod?.GetCustomAttribute(typeof(CompilerGeneratedAttribute)) is object;
  1. <Clone>$@Yair Halberstadt가 지적한 회원 확인
isRecord = t.GetMethod("<Clone>$") is object;

또는 둘의 조합

제네릭 유형이 레코드라는 제네릭 제약 조건을 가질 수 있습니까?

아니

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

일반적인 Python 스레딩 및 코드 문제

분류에서Dev

레코드 유형에 대한 일반적인 제약

분류에서Dev

일치하는 레코드가없는 경우 '0'반환 값 강제

분류에서Dev

C #의 일반 제약 조건

분류에서Dev

코드 전쟁에서 어레이 교환 및 반전 문제

분류에서Dev

gnu Extended Asm을 사용하여 asm (어셈블러 코드)에 대한 값 및 제약 조건 반환

분류에서Dev

.NET 메서드가 제네릭 및 형식 제약 조건을 사용하는 대신 일반 형식을 반환하는 이유는 무엇입니까?

분류에서Dev

레일스 뷰 및 컨트롤러에서 레코드 반복

분류에서Dev

Windows 10 IOT Core, 일반 C ++ dll 및 C # 코드 지원?

분류에서Dev

노드 js 및 반응 js 사용시 파일로드 문제

분류에서Dev

MongoDb 및 Python에 대해 반환 된 동일한 하위 문서의 여러 레코드 문제

분류에서Dev

특정 및 일반 레코드가있는 MySQL IN 절

분류에서Dev

xlsx 파일 반복 및 유니 코드 제거 python openpyxl

분류에서Dev

new () 및 추상 기본 클래스의 일반 유형 제약

분류에서Dev

new () 및 추상 기본 클래스의 일반 유형 제약

분류에서Dev

RTOS 및 일반 OS에 대한 프로그래밍 제약

분류에서Dev

CSS 모범 사례 및 일반 코딩

분류에서Dev

C # 권투 및 반복 코드 방지

분류에서Dev

스레드 "AWT-EventQueue-0"예외 java.lang.IllegalArgumentException : 비교 메소드가 일반 계약을 위반 함

분류에서Dev

일시 삭제 된 레코드 및 고유 제약 조건 필드에서 typeorm이 작동하지 않음

분류에서Dev

Automapper가있는 제네릭-단일 레코드 반환

분류에서Dev

linq 및 C #을 사용하여 xsd 파일에 레코드 추가

분류에서Dev

2 개의 CSV 파일 사이에서 레코드 찾기 및 바꾸기 C #

분류에서Dev

C ++에서 일반적으로 int 값, '255'및 16 진수 값 '0xff'를 사용합니까?

분류에서Dev

데이터 프레임 반복 및 요약 통계 생성 문제

분류에서Dev

"일반"및 "라틴 -9 전용"키보드 레이아웃의 차이점은 무엇입니까?

분류에서Dev

일반 레코드 및 테이블 유형과 함께 'InsertQuery'를 어떻게 사용할 수 있습니까?

분류에서Dev

반환 유형에 대한 제네릭 제약 조건을 위반하면서 코드 컴파일

분류에서Dev

행 비교 및 모든 레코드와 일치하는 열 반환 (POSTGRESQL)

Related 관련 기사

  1. 1

    일반적인 Python 스레딩 및 코드 문제

  2. 2

    레코드 유형에 대한 일반적인 제약

  3. 3

    일치하는 레코드가없는 경우 '0'반환 값 강제

  4. 4

    C #의 일반 제약 조건

  5. 5

    코드 전쟁에서 어레이 교환 및 반전 문제

  6. 6

    gnu Extended Asm을 사용하여 asm (어셈블러 코드)에 대한 값 및 제약 조건 반환

  7. 7

    .NET 메서드가 제네릭 및 형식 제약 조건을 사용하는 대신 일반 형식을 반환하는 이유는 무엇입니까?

  8. 8

    레일스 뷰 및 컨트롤러에서 레코드 반복

  9. 9

    Windows 10 IOT Core, 일반 C ++ dll 및 C # 코드 지원?

  10. 10

    노드 js 및 반응 js 사용시 파일로드 문제

  11. 11

    MongoDb 및 Python에 대해 반환 된 동일한 하위 문서의 여러 레코드 문제

  12. 12

    특정 및 일반 레코드가있는 MySQL IN 절

  13. 13

    xlsx 파일 반복 및 유니 코드 제거 python openpyxl

  14. 14

    new () 및 추상 기본 클래스의 일반 유형 제약

  15. 15

    new () 및 추상 기본 클래스의 일반 유형 제약

  16. 16

    RTOS 및 일반 OS에 대한 프로그래밍 제약

  17. 17

    CSS 모범 사례 및 일반 코딩

  18. 18

    C # 권투 및 반복 코드 방지

  19. 19

    스레드 "AWT-EventQueue-0"예외 java.lang.IllegalArgumentException : 비교 메소드가 일반 계약을 위반 함

  20. 20

    일시 삭제 된 레코드 및 고유 제약 조건 필드에서 typeorm이 작동하지 않음

  21. 21

    Automapper가있는 제네릭-단일 레코드 반환

  22. 22

    linq 및 C #을 사용하여 xsd 파일에 레코드 추가

  23. 23

    2 개의 CSV 파일 사이에서 레코드 찾기 및 바꾸기 C #

  24. 24

    C ++에서 일반적으로 int 값, '255'및 16 진수 값 '0xff'를 사용합니까?

  25. 25

    데이터 프레임 반복 및 요약 통계 생성 문제

  26. 26

    "일반"및 "라틴 -9 전용"키보드 레이아웃의 차이점은 무엇입니까?

  27. 27

    일반 레코드 및 테이블 유형과 함께 'InsertQuery'를 어떻게 사용할 수 있습니까?

  28. 28

    반환 유형에 대한 제네릭 제약 조건을 위반하면서 코드 컴파일

  29. 29

    행 비교 및 모든 레코드와 일치하는 열 반환 (POSTGRESQL)

뜨겁다태그

보관