제네릭이 아닌 클래스를 제네릭 기본 클래스로 캐스팅

제네릭 기본 클래스 유형을 사용하여 제네릭이 아닌 클래스를 List에 넣고 싶습니다. 그러나 코드는 변환이 불가능하다는 오류와 결합하지 않습니다. 나는 C #을 처음 접했기 때문에 여기에서 매우 기본적인 것을 놓칠 수 있거나 그런 식으로 제네릭을 사용하는 것이 좋은 생각이 아닙니다. 내 코드는 다음과 같습니다.

public abstract class AbstractClass{
  public string foo;
}

public class A : AbstractClass{
  public int bar
}

public class B : AbstractClass{
  public int baz
}

public abstract class AbstractBehaviour<T> : MonoBehaviour where T : AbstractClass{
  public T data;
  public abstract string compute(T arg);
}

public class ABehaviour : AbstractBehaviour<A>{
  //some implementation of compute
}

public class BBehaviour : AbstractBehaviour<B>{
  //some implementation of compute
}

이 설정으로 다음과 같이하고 싶습니다.

ABehaviour a = new ABehaviour();
BBehaviour b = new BBehaviour();
List<AbstractBehaviour<AbstractClass>> list = new List<AbstractBehaviour<AbstractClass>>();
list.Add(a);
list.Add(b);

대단히 감사합니다.

전문가 스 트론

AbstractBehaviour<A>(또는 AbstractBehaviour<B>)이 아니기 때문에 할 수 없습니다 AbstractBehaviour<AbstractClass>. 예를 들어 Compute메소드를 취하면 AbstractBehaviour<AbstractClass>-for는 유형의 매개 변수로 호출하는 것이 절대적으로 유효하지만이 매개 변수로 호출 AbstractClass하는 것은 확실히 유효하지 않습니다 AbstractBehaviour<A>.compute.

또한 C #의 공분산 및 반공 분산 에 대해 읽어보십시오 (하지만 Compute방법에 도움이되지 않음 ).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

유형이 아닌 크기로 제네릭 및 캐스팅

분류에서Dev

제네릭이 아닌 정적 클래스의 제네릭 오버로드 된 메서드에서 RuntimeMethodInfo 가져 오기

분류에서Dev

제네릭 클래스를 기반으로 제네릭 인터페이스를 정의하는 방법

분류에서Dev

스칼라. 클래스를 제네릭으로 만들기

분류에서Dev

제네릭 유형을 서브 클래스로 캐스팅

분류에서Dev

제네릭 자체가 제네릭 인 제네릭 클래스

분류에서Dev

제네릭에서 파생 된 클래스 컬렉션에서 제네릭 기본 클래스 사용

분류에서Dev

제네릭 및 상속 : 기본 클래스 및 하위 클래스와 함께 제네릭 사용

분류에서Dev

제네릭 클래스 캐스팅? -> 혼란스러운 결과

분류에서Dev

C # 제네릭, 여기서 T 클래스 : (상속 클래스)

분류에서Dev

객체 인 제네릭 클래스를 유형으로 캐스팅

분류에서Dev

제네릭 클래스의 C # 재정의 기본 클래스 속성

분류에서Dev

제약 조건을 통해 파생 된 제네릭 형식을 제네릭이 아닌 기본 형식으로 캐스팅 할 수없는 이유는 무엇입니까?

분류에서Dev

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

분류에서Dev

C # 제네릭 형식이 일부 클래스를 구현할 때 클래스를 캐스팅하는 방법

분류에서Dev

객체가 제네릭 기본 클래스의 인스턴스인지, 제네릭 유형인지 확인

분류에서Dev

제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

분류에서Dev

기본 클래스에서 제네릭 메서드를 호출하는 FSharp

분류에서Dev

컬렉션 제네릭 클래스를 확장하는 제네릭 클래스

분류에서Dev

C # 제네릭 확장 메서드를 사용하여 컬렉션이 아닌 클래스에서 작동

분류에서Dev

데코레이터가 클래스가 아닌 인터페이스에 종속되는 비 제네릭 인터페이스로 클래스 데코레이션

분류에서Dev

캐스팅 및 제네릭 제약

분류에서Dev

TypeScript 클래스 제네릭 제약

분류에서Dev

제네릭 클래스를 확장하는 클래스를 위해 Mockito로 mock 만들기

분류에서Dev

Django 클래스 기반 제네릭 뷰 (CreateView) 국제화?

분류에서Dev

제네릭 유형 인수로 유형 'x'를 사용하여 제네릭 클래스를 구현하는 클래스 찾기

분류에서Dev

제네릭 클래스 유형 제약이있는 제네릭 메서드

분류에서Dev

제네릭 클래스에서 Java 제네릭 클래스 인스턴스화

분류에서Dev

제네릭 클래스를 제네릭으로 확장하는 방법

Related 관련 기사

  1. 1

    유형이 아닌 크기로 제네릭 및 캐스팅

  2. 2

    제네릭이 아닌 정적 클래스의 제네릭 오버로드 된 메서드에서 RuntimeMethodInfo 가져 오기

  3. 3

    제네릭 클래스를 기반으로 제네릭 인터페이스를 정의하는 방법

  4. 4

    스칼라. 클래스를 제네릭으로 만들기

  5. 5

    제네릭 유형을 서브 클래스로 캐스팅

  6. 6

    제네릭 자체가 제네릭 인 제네릭 클래스

  7. 7

    제네릭에서 파생 된 클래스 컬렉션에서 제네릭 기본 클래스 사용

  8. 8

    제네릭 및 상속 : 기본 클래스 및 하위 클래스와 함께 제네릭 사용

  9. 9

    제네릭 클래스 캐스팅? -> 혼란스러운 결과

  10. 10

    C # 제네릭, 여기서 T 클래스 : (상속 클래스)

  11. 11

    객체 인 제네릭 클래스를 유형으로 캐스팅

  12. 12

    제네릭 클래스의 C # 재정의 기본 클래스 속성

  13. 13

    제약 조건을 통해 파생 된 제네릭 형식을 제네릭이 아닌 기본 형식으로 캐스팅 할 수없는 이유는 무엇입니까?

  14. 14

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

  15. 15

    C # 제네릭 형식이 일부 클래스를 구현할 때 클래스를 캐스팅하는 방법

  16. 16

    객체가 제네릭 기본 클래스의 인스턴스인지, 제네릭 유형인지 확인

  17. 17

    제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

  18. 18

    기본 클래스에서 제네릭 메서드를 호출하는 FSharp

  19. 19

    컬렉션 제네릭 클래스를 확장하는 제네릭 클래스

  20. 20

    C # 제네릭 확장 메서드를 사용하여 컬렉션이 아닌 클래스에서 작동

  21. 21

    데코레이터가 클래스가 아닌 인터페이스에 종속되는 비 제네릭 인터페이스로 클래스 데코레이션

  22. 22

    캐스팅 및 제네릭 제약

  23. 23

    TypeScript 클래스 제네릭 제약

  24. 24

    제네릭 클래스를 확장하는 클래스를 위해 Mockito로 mock 만들기

  25. 25

    Django 클래스 기반 제네릭 뷰 (CreateView) 국제화?

  26. 26

    제네릭 유형 인수로 유형 'x'를 사용하여 제네릭 클래스를 구현하는 클래스 찾기

  27. 27

    제네릭 클래스 유형 제약이있는 제네릭 메서드

  28. 28

    제네릭 클래스에서 Java 제네릭 클래스 인스턴스화

  29. 29

    제네릭 클래스를 제네릭으로 확장하는 방법

뜨겁다태그

보관