J'ai une méthode d'extension:Pourquoi une extension de <T> Nullable ne peut-elle pas être utilisée sur une valeur de type T?
public static int DoStuff(this MyEnum? enumValue)
{
...
}
Je veux invoquer sur une valeur de MyEnum
qui est connu pour être non nulle:
MyEnum enumVal = ...
var x = enumVal.DoStuff(); // compiler error!
Erreur:
error CS1928: 'MyEnum' does not contain a definition for 'DoStuff' and the best extension method overload 'MyExtensions.DoStuff(MyEnum?)' has some invalid arguments
I peut contourner ce problème en déclarant une surcharge de l'extension:
public static int DoStuff(this MyEnum enumValue)
{
return DoStuff((MyEnum?)enumValue);
}
Sinon, je peux invoque la classe d'extension explicitement:
var x = MyExtensions.DoStuff(enumVal);
Mais est non-intuitive. Pourquoi une extension Nullable<T>
ne peut-elle pas accepter une valeur de type T
, comme n'importe quelle signature de méthode normale?
car 'MyEnum' n'est pas NULL – Rahul
ils ne sont pas du même type. –
En plus d'un 'Nullable' n'est certainement pas un 'T'. –