6

ご存知のように、Ninject カーネル バインディングはこのようなものです。

kernel.Bind<IMyService>().To<MyService>();

xml から MyService を取得したい。このような WebConfig または App.Config 。

<add key="service" value="MyNamespace.MyService">

この文字列をコードで取得できます。しかし、どうすればそれを使用できますか

kernel.Bind<IMyService>().To<???>();

または、Niniject はこれをデフォルトでサポートできますか?

4

5 に答える 5

2

Ninject カーネル バインディングは次のようになります。

以下のような XML を作成します。

<module name="myXmlConfigurationModule">
    <bind service="MyNamespace.IMyService, MyAssembly"
          to="MyNamespace.MyServiceImplementation, MyAssembly" />
    <bind service="MyNamespace.IMyOtherService, MyAssembly"
          to="MyNamespace.MyOtherServiceImplementation, MyAssembly" />
</module>

次にコード:-

using Ninject;

    enter code here

     class ABC
        {
          public void CallingMethodUsingNinject()
            {
               private IKernel kernel= new StandardKernel();
               kernel.Load("yourXmlFileName.xml");
               bool ismodule = kernel.HasModule("myXmlConfigurationModule");//To Check The module 
               if(ismodule )
               {           
               IMyService MyServiceImplementation = kernel.Get<IMyService>();
               MyServiceImplementation.YourMethod();
               }
           }
       }

XML ファイルのプロパティ設定が原因で問題が発生する可能性があるため、xml ファイルの設定を変更する必要があります。IMyService のアクティブ化でエラーが発生しました 一致するバインディングが利用できず、型が自己バインド可能ではありません。解決策: - 出力ディレクトリに自動的にコピーできるように、この xml ファイルの [出力ディレクトリにコピー] プロパティを [新しい場合はコピー] に設定することを忘れないでください。

詳細については、https ://www.packtpub.com/sites/default/files/9781782166207_Chapter_02.pdf をお読みください。

于 2014-12-26T12:18:00.633 に答える
0

最終的に解決策が得られました このファイルの [Copy to Output of your xml file Directory] ​​プロパティを [Copy if newer] に設定することを忘れないでください。これにより、出力ディレクトリに自動的にコピーできるようになります。多くのための

于 2014-12-24T15:54:33.203 に答える
0

あなたが試すことができます:

Bind<IClientChannelFactory<ICustomerServiceChannel>>()
  .To<ClientChannelFactory<ICustomerServiceChannel>>() 
  .WithConstructorArgument("endpointConfigurationName", ServiceBinding);
于 2019-03-26T12:32:01.687 に答える