Vous pouvez utiliser Func<T, TResult>
un délégué générique. (Voir MSDN )
Func<MyType, ReturnType> func = (db) => { return new MyType(); }
Il existe également des délégués génériques utiles qui prennent en compte une valeur de retour:
Converter<TInput, TOutput>
( MSDN )
Predicate<TInput>
- renvoie toujours booléen ( MSDN )
Méthode:
public MyType SimpleUsing.DoUsing<MyType>(Func<TInput, MyType> myTypeFactory)
Délégué générique:
Func<InputArgumentType, MyType> createInstance = db => return new MyType();
Exécuter:
MyType myTypeInstance = SimpleUsing.DoUsing(
createInstance(new InputArgumentType()));
OU explicitement:
MyType myTypeInstance = SimpleUsing.DoUsing(db => return new MyType());
Vous pouvez également profiter du fait qu'une méthode lambda ou anonyme peut fermer des variables dans sa portée englobante.
la source
Utilisez
Func<T>
plutôt queAction<T>
.Action<T>
agit comme une méthode void avec un paramètre de type T, tandis queFunc<T>
fonctionne comme une fonction sans paramètres et qui renvoie un objet de type T.Si vous souhaitez donner des paramètres à votre fonction, utilisez
Func<TParameter1, TParameter2, ..., TReturn>
.la source