0

Windows サービス内で StructureMap を初期化するにはどうすればよいですか?

私が得ているエラーは次のとおりです。提供されたサービスタイプは、デフォルトの(パラメーターなしの)コンストラクターがないため、サービスとしてロードできませんでした。この問題を解決するには、既定のコンストラクターを型に追加するか、型のインスタンスをホストに渡します。

Visual Studio 2008 を使用して Windows フォーム アプリケーションを作成しました。このアプリケーションでは、これらのファイルを追加しました。

  1. service.cs
  2. MyPrivateServiceService.cs
  3. AppRegistry.cs

コード: パブリック クラス MyPrivateServiceService

{
    private readonly IAdapter adapter;
    public MyPrivateServiceService(IAdapter adapter)
    {
        this.adapter = adapter;
    }
    [OperationBehavior]
    public void DoSomthing()
    {
        var res = adapter.GetById(1);
    }
}
partial class Service : WcfServiceBase
{
    static Service()
    {
        GlobalContext.Properties["PROGRNAAM"] = ServiceNaamKort;
        log = LogManager.GetLogger(typeof(Service));
        InitializeIoc();
    }
    private static void InitializeIoc()
    {
        ObjectFactory.Configure(x =>
        {
            x.AddRegistry<AppRegistry>();
        });
    }
    protected override void OnStart(string[] args)
    {
        try
        {
            base.OnStart(args);
            host = new ServiceHost(typeof(MyPrivateServiceService));
            host.Open();

        }
        catch (Exception ex)
        {
            log.Fatal("....", ex);
            DisposeHost();
            throw;
        }
    }
}
public class AppRegistry : Registry
{
    public AppRegistry()
    {
        Scan(s =>
        {
            s.WithDefaultConventions();
        });
    }
}

ありがとうございました

オリ

4

1 に答える 1

0

このリンクを見つけました: http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/

次のような新しいコンストラクターを追加すると機能します。

public CustomerSearchService()
: this(ObjectFactory.GetInstance<ICustomerRepository>(), 
    ObjectFactory.GetInstance<ICustomerSummaryMapper>())

{ }

StructureMapServiceHostFactory を実装しようとしましたが、Windows サービスを使用しています。service.cs で StructureMapServiceHostFactory を初期化する方法はありますか?

ありがとうございました

オリ

于 2012-11-23T12:48:57.127 に答える