J'ai une classe générique, où je veux instancier un objet avec le type générique. Je veux utiliser un argument pour le constructeur du type.
Mon code:
public class GenericClass<T> where T : Some_Base_Class, new()
{
public static T SomeFunction(string s)
{
if (String.IsNullOrEmpty(s))
return new T(some_param);
}
}
Je reçois une erreur sur le
new T(some_param)
'T': ne peut pas fournir d'arguments lors de la création d'une instance d'un type de variable
Des idées comment puis-je faire cela?
Jeter un coup d'œil à Activator.CreateInstance
. Par exemple:
var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });
Évidemment, remplacer les null
s par les valeurs appropriées attendues par l'un des constructeurs du type.
Si vous recevez une erreur de compilation sur cannot convert object to type T
, puis incluez as T
:
var instance = Activator.CreateInstance(typeof(T),
new object[] { null, null }) as T;