0
私は、このサービスの静的プロパティに注入するために、スプリングを使用していますSpring.Netはインスタンス化されたWindowsサービスに挿入されますか?出来ますか?
static void Main(string[] args)
{
//TopShelf
if (args != null && args.Length > 0)
{
var host = HostFactory.New(
x =>
{
x.Service<MyWindowsSvcHost>(
s =>
{
s.ConstructUsing(name => new MyWindowsSvcHost());
s.WhenStarted(tc => tc.Start(null));
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("SomeServiceName");
x.SetDisplayName("SomeServiceName");
x.SetServiceName("SomeServiceName");
});
host.Run();
Environment.ExitCode = 0;
}
else
{
ServiceBase[] ServicesToRun = new ServiceBase[] { new MyWindowsSvcHost() };
ServiceBase.Run(ServicesToRun);
}
}
、一番上の棚を使用して、私が持っているサービスの主な方法でWindowsサービスを持っています。 MyWindowsSvcHost内には、静的なプロパティmyStaticPropertyがあります。以下は私のサービスのapp.configが
<object id="SomeName" singleton="false" type="MyWindowsSvcHostAssembly.MyWindowsSvcHost, MyWindowsSvcHostAssembly">
<property name="MyStaticProperty" ref="myStaticObject" />
</object>
<object id="myStaticObject" singleton="true" type="SomeAssembly.MyStaticClass, SomeAssembly">
</object>
のように見え、サービス内で、私はプロパティ
のpublic static工ass MyStaticPropertyを{取得持っているかです。セット; }
これは常にnullです。シングルトンをtrueに変更してデバッグすると、常に正しく割り当てられ、すべてが機能します。
<object id="SomeName" singleton="true" type="MyWindowsSvcHostAssembly.MyWindowsSvcHost, MyWindowsSvcHostAssembly">
<property name="MyStaticProperty" ref="myStaticObject" />
</object>
ここで何が起こっているのでしょうか?