L'intention de ce qui suit est de permettre que l'appel IRegistration<Foo>.As<IFoo>
si Foo
implémente IFoo
:paramètre de type Contraindre d'une méthode aux interfaces mises en œuvre par un autre type
interface IRegistration<TImplementation>
{
void As<TContract>() where TImplementation : TContract;
}
Ce n'est pas autorisé par le compilateur C# 3.0. Je reçois l'erreur suivante:
'SomeNamespace.IRegistration.As()' does not define type parameter 'TImplementation'
Existe-t-il un moyen de contourner cela, autre que de mettre les deux paramètres de type dans la déclaration de méthode? Cette question est inspiré par ce other question about Autofac.
Hmm, ne pense pas que cela fonctionne - 'TContract' sur l'interface est différent de' TContract' sur la méthode. –
@Tim Robinson - bon point. Je cherchais quelque chose qui va compiler et oublié les exigences ... Réponse mise à jour. – Oded
D'accord avec votre réponse mise à jour - Je ne vois pas d'autre moyen de contourner cela. –