2012-11-08 15 views
5

MoqMockingKernelクラスを使用しようとしています。 (Ninject.MockingKernel.Moq)をユニットテスト用のNinject.MockingKernel Extensionから取得します。MoqMockingKernel:System.TypeLoadException:種類によって違反する継承セキュリティー規則

MoqMockingKernelを初期化するには、私は次のエラーを取得しています:

System.TypeLoadException: System.TypeLoadException: Inheritance security rules violated by type: 'Ninject.MockingKernel.MockingKernel'. Derived types must either match the security accessibility of the base type or be less accessible..

マイ初期化コード:

 private MoqMockingKernel mockingKernel; 
     private Mock<IUnitOfWork> unitOfWorkMock; 
     private IExternalServiceRepository externalServiceRepository; 

     [TestInitialize] 
     public void Initialize() 
     { 
      this.mockingKernel = new MoqMockingKernel(); 
      this.mockingKernel.Bind<IUnitOfWork>().ToMock(); 

      this.unitOfWorkMock = this.mockingKernel.GetMock<IUnitOfWork>(); 

      externalServiceRepository = new ExternalServiceRepository { Kernel = this.mockingKernel }; 
     } 

どのように私はこのTypeLoadExceptionを解決することができますか?

答えて

4

.Net framework> = 4.0を使用していますか?

このconversation

を参照してください。私はそれらの命令からアドバイスを取った:私はこのラインにプロジェクトNinject.MockingKernelとNinject.MockingKernel.MoqでAssemblyInfo.csに

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]

を追加することにより、MockingKernelのソースコードを変更しました。 その後、私はソリューションを再コンパイルし、dllをインストールして、コードが動作し始めました!

私はこれがあなたのトリックだと願っています。

関連する問題