ServiceStack.Funq.Quartz Beispielcode istServiceStack.Funq.Quartz kann Typ nicht instanziieren?
public class MyServices : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, {0}!".Fmt(request.Name) };
}
}
public class HelloJob : IJob
{
private MyServices MyServices { get; set; }
public HelloJob(MyServices myServices)
{
MyServices = myServices;
}
public void Execute(IJobExecutionContext context)
{
var response = MyServices.Any(new ServiceModel.Hello
{
Name = "CodeRevver"
});
response.PrintDump();
}
}
Die oben funktioniert gut ist. Wenn ich in der MyServices-Klasse die Any-Funktion entferne und den inneren Code kommentieren.
public class MyServices : Service
{
}
wird die quartz.net die Fehler:
[Quartz.Core.ErrorLogger】 An error occurred instantiating job to be executed. job= 'JobGroup1.GetUserJob111' Problem instantiating type 'ServiceStackWithQuartz.HelloJob'
, warum die Klasse öffentliches Objekt Any(Hello request)
Funktion haben muss?
Danke für die Antwort. Ja, du hast recht. wegen der Art und Weise der ServiceStack Funq IoC, Es muss mindestens eine Service-Implementierung, die ein Service, wenn enthält (Any, Put, Get, Post ..), funktioniert gut, aber ich brauche nur einige Datenbank-Operationen, @mythz hat irgendeinen Ratschlag? – ali
Funq verwendet 'container.Resolve 'für Konstruktorinjektion, die eine obligatorische Abhängigkeit darstellt, aber wenn Sie ** öffentliche Eigenschaften ** verwenden, löst Funq stattdessen Abhängigkeiten mit' container.TryResolve ', die optional sein können. –
mythz
Endlich muss ich in der Initialisierungsklasse 'container.RegisterAutoWiredType (typeof (MyServices));' hinzufügen. aber ich fand den Quartz.net-Job ausgeführt, wird es nicht aufrufen, die 'Service.Dispose()', dann, wenn in MyService ich Db-Vorgang aufrufen, wird es die Verbindung nicht schließen und dispose(). @ Michael Clark – ali