제네릭 메서드의 제네릭 형식 변환

Cguedel

다음 클래스가 있습니다 (일부는 PRISM 프레임 워크에 있으며 변경할 수 없음).

public abstract class NetworkEventBase<T> : CompositePresentationEvent<T> where T : NetworkEventPayload { }
public class NetworkEventPayload { }
public class TestEvent : NetworkEventBase<TestPayload> { }
public class TestPayload : NetworkEventPayload { }

// the following classes are PRISM classes:
public class CompositePresentationEvent<TPayload> : EventBase { }
public abstract class EventBase { }

이제 TestEvent 인스턴스를 IEventAggregator의 데코레이터 내에서 기본 클래스 NetworkEventBase로 변환해야합니다. IEventAggregator는 다음과 같습니다.

public interface IEventAggregator
{
    TEventType GetEvent<TEventType>() where TEventType : EventBase, new();
}

이제 내 데코레이터에서 다음과 같이 변환하려고합니다.

public class MessageBusAdapterInjectorDecorator : IEventAggregator {
    ...

    public TEventType GetEvent<TEventType>() where TEventType : EventBase, new()
    {
        var aggregatedEvent = this.eventAggregator.GetEvent<TEventType>();
        var networkEvent = aggregatedEvent as NetworkEventBase<NetworkEventPayload>;

        if (networkEvent != null)
        {
            networkEvent.MessageBusAdapter = this.messageBusAdapter;
        }

        return aggregatedEvent;
    }
}

그러나 aggregatedEvent의 런타임 유형이 TestEvent 인 경우에도 networkEvent는 항상 null입니다.

제페 스티 그 닐슨

호출 클래스NetworkEventBase<T> 가에서 공변이 되기를 희망하는 것 같습니다 T. 그러나 제네릭 클래스는 C #에서 공변 할 수 없습니다 (제네릭 인터페이스는 가능).

이 문제에 대한 다른 스레드를 참조하십시오.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

제네릭 메서드의 제네릭 형식 변환

분류에서Dev

C #의 제네릭 형식 변환

분류에서Dev

제네릭 함수의 제네릭 형식의 HashSet에서 HashSet <T> 반환

분류에서Dev

메서드 반환 유형으로서의 제네릭

분류에서Dev

제네릭 형식을 반환하는 제네릭 메서드를 만드는 방법

분류에서Dev

Java 제네릭-실제 유형의 제네릭 매개 변수 얻기

분류에서Dev

자바 제네릭의 독립형 형식 매개 변수

분류에서Dev

제네릭 형식의 클래스를 반환하는 방법

분류에서Dev

TypeScript에서 제네릭 형식을 반환하는 방법

분류에서Dev

제네릭 반환 형식이 다른 메서드를 상속하는 방법

분류에서Dev

C # 제네릭 형식의 다형성

분류에서Dev

C #에서 제네릭 형식을 매개 변수로 사용

분류에서Dev

변수 ViewModel 형식을 제네릭으로 메서드에 전달

분류에서Dev

제네릭 배열 형식 반환

분류에서Dev

Scala의 제네릭 유형

분류에서Dev

제네릭 유형의 @RequestBody

분류에서Dev

Java 제네릭 유형 변환

분류에서Dev

자바 제네릭은 메서드의 반환 형식 앞에 와일드 카드 용도를 경계

분류에서Dev

C #의 이중 제네릭 형식

분류에서Dev

Scala : Future를 반환하는 매개 변수 또는 제네릭 형식 인수가있는 메서드

분류에서Dev

제네릭 제약의 제네릭 유형

분류에서Dev

IComparer <T> 및 제네릭 형식 메서드 문제

분류에서Dev

단항 형식 메서드 (또는 클래스)에서 muti 형식 제네릭 만들기 및 반환

분류에서Dev

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

분류에서Dev

메서드 재정의시 반환 유형을 변경할 수 없음, 제네릭 사용시 오류

분류에서Dev

람다 식을 정의 할 때 제네릭 형식 매개 변수 <T> 사용

분류에서Dev

제네릭 형식 이름을 포함하여 제네릭 메서드의 이름을 검색하는 방법

분류에서Dev

Swift : 제네릭 클래스의 제네릭 유형 비교

분류에서Dev

제네릭 메서드에서 제네릭 유형을 확인하는 방법

Related 관련 기사

  1. 1

    제네릭 메서드의 제네릭 형식 변환

  2. 2

    C #의 제네릭 형식 변환

  3. 3

    제네릭 함수의 제네릭 형식의 HashSet에서 HashSet <T> 반환

  4. 4

    메서드 반환 유형으로서의 제네릭

  5. 5

    제네릭 형식을 반환하는 제네릭 메서드를 만드는 방법

  6. 6

    Java 제네릭-실제 유형의 제네릭 매개 변수 얻기

  7. 7

    자바 제네릭의 독립형 형식 매개 변수

  8. 8

    제네릭 형식의 클래스를 반환하는 방법

  9. 9

    TypeScript에서 제네릭 형식을 반환하는 방법

  10. 10

    제네릭 반환 형식이 다른 메서드를 상속하는 방법

  11. 11

    C # 제네릭 형식의 다형성

  12. 12

    C #에서 제네릭 형식을 매개 변수로 사용

  13. 13

    변수 ViewModel 형식을 제네릭으로 메서드에 전달

  14. 14

    제네릭 배열 형식 반환

  15. 15

    Scala의 제네릭 유형

  16. 16

    제네릭 유형의 @RequestBody

  17. 17

    Java 제네릭 유형 변환

  18. 18

    자바 제네릭은 메서드의 반환 형식 앞에 와일드 카드 용도를 경계

  19. 19

    C #의 이중 제네릭 형식

  20. 20

    Scala : Future를 반환하는 매개 변수 또는 제네릭 형식 인수가있는 메서드

  21. 21

    제네릭 제약의 제네릭 유형

  22. 22

    IComparer <T> 및 제네릭 형식 메서드 문제

  23. 23

    단항 형식 메서드 (또는 클래스)에서 muti 형식 제네릭 만들기 및 반환

  24. 24

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

  25. 25

    메서드 재정의시 반환 유형을 변경할 수 없음, 제네릭 사용시 오류

  26. 26

    람다 식을 정의 할 때 제네릭 형식 매개 변수 <T> 사용

  27. 27

    제네릭 형식 이름을 포함하여 제네릭 메서드의 이름을 검색하는 방법

  28. 28

    Swift : 제네릭 클래스의 제네릭 유형 비교

  29. 29

    제네릭 메서드에서 제네릭 유형을 확인하는 방법

뜨겁다태그

보관