Ho una semplice app di console .NET 4.5 con i pacchetti Hangfire.Core e Hangfire.SqlServer installati.Utilizzo di Hangfire: metodo Encaue generico <T> genera l'eccezione
Nel mio metodo principale per cui ho Enqueue un processo in background come questo:
BackgroundJob.Enqueue<Test>((t) => Console.WriteLine(t.Sum(3,4)));
La mia classe di test si presenta così:
public class Test
{
public Test(){ }
public int Sum(int a, int b)
{
return a + b;
}
}
Quando ho F5 mio programma ottengo un'eccezione sulla linea con Accoda:
"Un'eccezione non gestita di tipo 'System.InvalidOperationException' si è verificata nel sistema .Core.dll Ulteriori informazioni: 't' variabile di tipo 'HangfireTest.Test' referenziato dal campo di applicazione '', ma non è definito"
quando creo la mia classe di test in codice con 'nuovo' e utilizzare il metodo Enqueue non generico - tutto funziona:
BackgroundJob.Enqueue(() => Console.WriteLine(new Test().Sum(3,4)));
Ma ho bisogno di un generico, perché mi piacerebbe creare un ITest un'interfaccia e utilizzare l'iniezione di dipendenza per fare qualcosa di simile:
BackgroundJob.Enqueue<ITest>((t) => Console.WriteLine(t.Sum(3,4)));
Quindi, cosa sto facendo di sbagliato qui?
Sembra che il tuo 't' variabile è mai istanziato. – lokusking