Je rencontre un problème de généricité alors que je travaille sur un gestionnaire générique d'injection de dépendances (un localisateur de services de base).
Edit 1 (pour plus de clarté)
Bon, j'utilise en fait SimpleInjector comme résolveur de DI et il a la contrainte de classe sur sa méthode GetInstance, donc voici un code plus complet :
public T GetInstance<T>() where T : class
{
try
{
// works
return _container.GetInstance<T>();
}
catch( ActivationException aEx )
{
return default( T );
}
}
public T GetInstance<T>()
{
try
{
if( typeof( T ).IsClass )
{
// does not work, T is not a reference type
return _container.GetInstance<T>();
}
}
catch( ActivationException aEx )
{
return default( T );
}
}
Edit 2 - code final car il semble étrange dans les commentaires :
public T GetInstance<T>()
{
try
{
if( typeof( T ).IsClass )
{
return (T) _container.GetInstance(typeof(T));
}
}
catch( ActivationException aEx )
{
return default( T );
}
}