Prism - EventAggregator.GetEvent <>. Subscribe () - Usando genéricos e restrições

Estou tendo um problema ao assinar eventos com o Agregador de eventos que faz parte da estrutura do prisma.

Se eu usar algo como

eventAggregator.GetEvent<string>().Subscribe(MyMethod)

tudo funciona bem, meu método é acionado quando um evento é publicado.

No entanto, ao passar para um objeto mais complexo que não seja eu, encontro problemas.

Eu tenho um monte de classes que todas derivam de uma interface (IRequest), por exemplo

Eu tenho minha classe de evento configurada da seguinte maneira

public class MyEvent<TRequest> : PubSubEvent<MyClass<TRequest>> where TRequest : IRequest {}

Eu tenho uma classe genérica (MyClass) que usa um objeto de IRequest dentro dela - novamente, tudo parece funcionar bem neste momento.

Agora, digamos que eu publique um evento do MyClass que use o objeto Profile dentro dele:

eventAggregator.GetEvent<MyEvent<Profile>>().Publish(myProfileObject);

Na minha assinatura, eu gostaria de um método que possa capturar todos os eventos de MyEvent - independentemente de T ser Profile ou algum outro objeto derivado de IRequest - é aqui que parece que estou tendo problemas.

Nos exemplos a seguir, o primeiro funciona, mas o segundo não - eu gostaria de usar algo semelhante ao segundo.

eventAggregator.GetEvent<MyEvent<Profile>>().Subscribe(test1);
void test1 (MyClass<Profile> obj)
{
  //Some stuff here
}

eventAggregator.GetEvent<MyEvent<IRequest>>().Subscribe(test2);
void test2<T>(MyClass<T> obj) where T : IRequest
{
  //never gets called
}

Minha suposição é que, como o Profile deriva do IRequest, ele deve funcionar ??? Mas não !!

Qualquer ajuda seria apreciada.

ATUALIZAR
Se eu usar o seguinte, ele funcionará, mas exigiria a criação de uma assinatura separada para cada tipo de IRequest disponível - estou procurando ter apenas uma assinatura.

eventAggregator.GetEvent<MyEvent<Profile>>().Subscribe(test2);
eventAggregator.GetEvent<MyEvent<User>>().Subscribe(test2);

questionAnswers(1)

yourAnswerToTheQuestion