Por que não posso chamar Delegate.CreateDelegate na minha biblioteca de classes portátil?

Eu tenho o seguinte problema: quero ligarDelegate.CreateDelegate de dentro da minha Biblioteca de Classes Portátil visando o .NET 4.5, o Windows Phone 8 e o Windows 8 Store Apps, mas meu código não compila. O compilador diz que não pode encontrar o método noDelegate tipo.

O engraçado é que, por exemplo a biblioteca PRISM da Microsoft pode chamar 'Delegate.CreateDelegate' de uma biblioteca de classes portátil. Ele faz isso noDelegateReference classe. A biblioteca de classes portáteis PRISM tem como alvo o .NET 4.0, o Windows 8 Store Apps, o Windows Phone 8 e o Silverlight 5 (e, portanto, um conjunto ainda mais restritivo).

O código que não compila se parece com isto:

public class MyClass
{
    public void MyMethod<T>(EventHandler handler)
    {
        var @delegate = Delegate.CreateDelegate(typeof (OpenEventHandler<T>), null, handler.GetMethodInfo());
    }
}

public delegate void OpenEventHandler<in T>(T target, object sender, EventArgs arguments);

Um exemplo pode ser baixado aqui:https://dl.dropboxusercontent.com/u/14810011/PortableClassLibraryReferenceProblem.zip

Ele contém meu projeto de biblioteca e uma versão muito despojada do projeto PRISM PubSubEvents contendo apenasDelegateReference classe e sua interface. O código fonte completo deste último pode ser encontrado aqui:http://prismwindowsruntime.codeplex.com/SourceControl/latest

O que posso fazer para usar tudoDelegate membros? Agradeço antecipadamente por sua ajuda!

EDITAR depois da resposta de Henk Holterman:

GetMethodInfo () é um método de extensão que é suportado pelo subconjunto PCL. De qualquer forma, isso não está relacionado ao problema que não posso chamarDelegate.CreateDelegate enquanto o projeto PCL da PRISM pode.

EDIT 2 depois de Hans Passants comentar:

Eu apenas brinquei e descobri que quando eu ativo o Silverlight 5 como alvo da biblioteca portátil, entãoDelegate.CreateDelegate é de fato acessível (e o método de extensão GetMethodInfo não é mais). ÉDelegate.CreateDelegate então talvez mapeado para outra API para aplicativos do Windows 8 Store e Phone internamente? É a única maneira que eu poderia pensar em como este método seria subitamente acessível apenas porque eu adicionei o Silverlight 5 como um alvo válido.

(Você pode reproduzir isso clicando com o botão direito do mouse no projeto "MyPortableClassLibrary", clique em "Propriedades" e na guia "Biblioteca", clique em alterar para selecionar as estruturas que são direcionadas pela biblioteca portátil.)

Além disso, hoje cedo, criei um projeto App do Windows Store e vi que não haviaCreateDelegate método definido noDelegate classe no .NET para Windows Runtime.

No meu projeto atual, não quero segmentar o Silverlight 5 como usoIObservable<T> eIObserver<T> fortemente usando Rx e essas interfaces não são definidas no Silverlight.

questionAnswers(2)

yourAnswerToTheQuestion