Puede utilizar Func<T, TResult>
delegado genérico. (Ver MSDN )
Func<MyType, ReturnType> func = (db) => { return new MyType(); }
También hay delegados genéricos útiles que consideran un valor de retorno:
Converter<TInput, TOutput>
( MSDN )
Predicate<TInput>
- siempre devuelve bool ( MSDN )
Método:
public MyType SimpleUsing.DoUsing<MyType>(Func<TInput, MyType> myTypeFactory)
Delegado genérico:
Func<InputArgumentType, MyType> createInstance = db => return new MyType();
Ejecutar:
MyType myTypeInstance = SimpleUsing.DoUsing(
createInstance(new InputArgumentType()));
O explícitamente:
MyType myTypeInstance = SimpleUsing.DoUsing(db => return new MyType());
También puede aprovechar el hecho de que un método lambda o anónimo puede cerrar las variables en su ámbito adjunto.
fuente
Utilice en
Func<T>
lugar deAction<T>
.Action<T>
actúa como un método vacío con parámetro de tipo T, mientras queFunc<T>
funciona como una función sin parámetros y que devuelve un objeto de tipo T.Si desea darle parámetros a su función, use
Func<TParameter1, TParameter2, ..., TReturn>
.fuente