0
containerBuilder
    .Register<IGraphClient>(context =>
    {
        var graphClient = new GraphClient(new Uri("http://localhost:9999/db/data"));
        graphClient.Connect(); // Particularly this line
        return graphClient;
    })
    .SingleInstance();

インターフェイスを具象クラスに登録する方法は理解できますが、この特定のクラスは単一のインスタンスである必要があり(これはLifeStyle.Singletonであると確信しています)、graphClient.Connect()メソッドも呼び出す必要があります。それが私がこだわっている主要な部分です。

JeffN825の回答に基づいて、私はこれを行いました。

container.Register(
                Component.For(
                    typeof (IGraphClient))
                    .ImplementedBy(typeof (GraphClient))
                    .LifeStyle.Singleton.UsingFactoryMethod(() =>
                                                                {
                                                                    var graphClient = new GraphClient(new Uri("http://localhost:7474/db/data"));
                                                                    graphClient.Connect();
                                                                    return graphClient;
                                                                }));
4

1 に答える 1

0

ComponentRegistration<T>.UsingFactoryMethod<T>インスタンスの作成を自分で制御する場合は、デリゲート(Func)を使用するメソッドを使用できます(これにより、Connectを呼び出すこともできます)。

于 2012-03-22T04:59:35.543 に答える