C #에서 추상 제약 조건을 사용하여 제네릭 클래스를 인스턴스화하는 방법

모건 엠.

다음과 같은 수업이 있습니다.

public abstract class ThingBase { }

public class ThingA : ThingBase { }

그리고 다음 일반 클래스 :

public class ThingOwner<ThingType> where ThingType : ThingBase { }

아래와 같이 ThingOwner 인스턴스를 만들고 싶습니다.

ThingOwner<ThingBase> thingOwner = new ThingOwner<ThingA>();

이 코드를 사용하면 다음 오류가 발생합니다. "Cannot implicitly convert type 'ThingOwner (ThingA)'to 'ThingOwner (ThingBase)'" .

나는 그것을 작동시키는 방법을 알 수 없다. 제네릭 클래스와 상속에 대한 기존 토론이 많이 있다는 것을 알고 있지만 거의 모든 것을 시도했지만 저에게 맞는 솔루션을 찾을 수 없었습니다.

감사!

낮은

C # 4.0에 도입 된 제네릭 형식에 대해 공분산을 사용해야 합니다. 이 작업을 수행하려면 클래스 대신 인터페이스를 사용해야합니다.

public interface IThingOwner<out ThingType> where ThingType : ThingBase { }

public class ThingOwner<ThingType> : IThingOwner<ThingType>
    where ThingType : ThingBase
{

}


IThingOwner<ThingBase> thingOwner = new ThingOwner<ThingA>();

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 제네릭 기본 클래스에 C # 제네릭 형식 제약 조건을 추가하는 방법은 무엇입니까?

분류에서Dev

추상 제네릭 클래스에서 파생 된 클래스가 자신을 제네릭 매개 변수로 사용하는지 확인하는 방법

분류에서Dev

제네릭을 사용하여 입력하는 추상 클래스에서 메서드를 재정의하는 방법은 무엇입니까?

분류에서Dev

새로운 제약 조건이있는 제네릭 클래스에서 내부 생성자를 사용하여 엔터티를 만드는 방법

분류에서Dev

제네릭 반환 유형을 사용하여 메서드에서 구체적인 클래스의 인스턴스를 반환하는 방법

분류에서Dev

제약 조건이있는 C # 상속 제네릭 클래스

분류에서Dev

ANGULAR : 제네릭을 사용하여 추상 클래스를 두 수준으로 확장하는 방법

분류에서Dev

C ++에서 제네릭 기본 클래스를 초기화하는 방법

분류에서Dev

Scala에서 Java 제네릭 내부 클래스를 인스턴스화하는 방법은 무엇입니까?

분류에서Dev

제네릭 클래스에 대한 필드 제약 조건-C #

분류에서Dev

인스턴스화를 위해 구조체 필드에 제약 조건을 추가하는 방법은 무엇입니까?

분류에서Dev

Haskell에서 제약 조건을 파라 메트릭 newtype에 연결하여이를 사용하는 모든 클래스 인스턴스에 자동으로 적용하는 방법은 무엇입니까?

분류에서Dev

Laravel-제네릭 클래스를 노출하여 기본 로직을 추상화하는 방법

분류에서Dev

인수 필요 클래스에서 제네릭을 사용하는 방법

분류에서Dev

다른 추상 클래스 내에서 추상 제네릭 클래스를 사용하는 방법이 있습니까?

분류에서Dev

C # 8에서 하위 클래스 제약 조건을 사용할 때 제네릭 참조 형식이 nullable이되도록 지정하는 방법은 무엇입니까?

분류에서Dev

클로저 컴파일러를 사용하여 제네릭 유형을 확장하는 클래스에 주석을 추가하는 방법

분류에서Dev

클로저 컴파일러를 사용하여 제네릭 유형을 확장하는 클래스에 주석을 추가하는 방법

분류에서Dev

제네릭 클래스 인스턴스가 주어진 인터페이스에 맞도록 강제하는 제약 조건을 만드는 방법은 무엇입니까?

분류에서Dev

제네릭 형식 제약 조건이 C #에서 인터페이스를 구현해야하는 경우 클래스 형식 제약 조건은 무엇을 달성합니까?

분류에서Dev

C #에서 제네릭 형식과 클래스를 비교하는 방법

분류에서Dev

인터페이스 빌더 .xib 파일에서 최상위 제약 조건을 추가하고 translatesAutoresizingMaskIntoConstraints를 비활성화하는 방법

분류에서Dev

인터페이스 빌더 .xib 파일에서 최상위 제약 조건을 추가하고 translatesAutoresizingMaskIntoConstraints를 비활성화하는 방법

분류에서Dev

C # 메서드에서 제네릭 클래스 참조를 얻는 방법

분류에서Dev

제약 조건 인 추상 클래스에 인터페이스를 구현하는 방법은 무엇입니까?

분류에서Dev

C #의 제네릭 클래스 내에서 제네릭 클래스의 개체를 사용하는 방법은 무엇입니까?

분류에서Dev

제약 조건을 사용하여 서로에 대해 두 개의 뷰를 추가하는 방법

분류에서Dev

WPF 컨트롤에서 상속하고 C #에서 제네릭 클래스를 동시에 사용하는 방법은 무엇입니까?

분류에서Dev

C # 제네릭 형식을 다른 클래스에 전달하는 방법

Related 관련 기사

  1. 1

    다른 제네릭 기본 클래스에 C # 제네릭 형식 제약 조건을 추가하는 방법은 무엇입니까?

  2. 2

    추상 제네릭 클래스에서 파생 된 클래스가 자신을 제네릭 매개 변수로 사용하는지 확인하는 방법

  3. 3

    제네릭을 사용하여 입력하는 추상 클래스에서 메서드를 재정의하는 방법은 무엇입니까?

  4. 4

    새로운 제약 조건이있는 제네릭 클래스에서 내부 생성자를 사용하여 엔터티를 만드는 방법

  5. 5

    제네릭 반환 유형을 사용하여 메서드에서 구체적인 클래스의 인스턴스를 반환하는 방법

  6. 6

    제약 조건이있는 C # 상속 제네릭 클래스

  7. 7

    ANGULAR : 제네릭을 사용하여 추상 클래스를 두 수준으로 확장하는 방법

  8. 8

    C ++에서 제네릭 기본 클래스를 초기화하는 방법

  9. 9

    Scala에서 Java 제네릭 내부 클래스를 인스턴스화하는 방법은 무엇입니까?

  10. 10

    제네릭 클래스에 대한 필드 제약 조건-C #

  11. 11

    인스턴스화를 위해 구조체 필드에 제약 조건을 추가하는 방법은 무엇입니까?

  12. 12

    Haskell에서 제약 조건을 파라 메트릭 newtype에 연결하여이를 사용하는 모든 클래스 인스턴스에 자동으로 적용하는 방법은 무엇입니까?

  13. 13

    Laravel-제네릭 클래스를 노출하여 기본 로직을 추상화하는 방법

  14. 14

    인수 필요 클래스에서 제네릭을 사용하는 방법

  15. 15

    다른 추상 클래스 내에서 추상 제네릭 클래스를 사용하는 방법이 있습니까?

  16. 16

    C # 8에서 하위 클래스 제약 조건을 사용할 때 제네릭 참조 형식이 nullable이되도록 지정하는 방법은 무엇입니까?

  17. 17

    클로저 컴파일러를 사용하여 제네릭 유형을 확장하는 클래스에 주석을 추가하는 방법

  18. 18

    클로저 컴파일러를 사용하여 제네릭 유형을 확장하는 클래스에 주석을 추가하는 방법

  19. 19

    제네릭 클래스 인스턴스가 주어진 인터페이스에 맞도록 강제하는 제약 조건을 만드는 방법은 무엇입니까?

  20. 20

    제네릭 형식 제약 조건이 C #에서 인터페이스를 구현해야하는 경우 클래스 형식 제약 조건은 무엇을 달성합니까?

  21. 21

    C #에서 제네릭 형식과 클래스를 비교하는 방법

  22. 22

    인터페이스 빌더 .xib 파일에서 최상위 제약 조건을 추가하고 translatesAutoresizingMaskIntoConstraints를 비활성화하는 방법

  23. 23

    인터페이스 빌더 .xib 파일에서 최상위 제약 조건을 추가하고 translatesAutoresizingMaskIntoConstraints를 비활성화하는 방법

  24. 24

    C # 메서드에서 제네릭 클래스 참조를 얻는 방법

  25. 25

    제약 조건 인 추상 클래스에 인터페이스를 구현하는 방법은 무엇입니까?

  26. 26

    C #의 제네릭 클래스 내에서 제네릭 클래스의 개체를 사용하는 방법은 무엇입니까?

  27. 27

    제약 조건을 사용하여 서로에 대해 두 개의 뷰를 추가하는 방법

  28. 28

    WPF 컨트롤에서 상속하고 C #에서 제네릭 클래스를 동시에 사용하는 방법은 무엇입니까?

  29. 29

    C # 제네릭 형식을 다른 클래스에 전달하는 방법

뜨겁다태그

보관