MoqMockingKernel:System.TypeLoadException:类型违反的继承安全规则

时间:2012-11-08 10:07:08

标签: c# ninject moq ninject-extensions

我尝试使用MoqMockingKernel类。来自Ninject.MockingKernel Extension的(Ninject.MockingKernel.Moq)进行单元测试。

在初始化MoqMockingKernel时,我收到以下错误:

  

System.TypeLoadException:System.TypeLoadException:Inheritance   违反安全规则的类型:   'Ninject.MockingKernel.MockingKernel'。派生类型必须匹配   基本类型的安全可访问性或不太容易访问..

我的初始化代码:

        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

1 个答案:

答案 0 :(得分:4)

您使用的是.Net framework&gt; = 4.0?

请参阅此conversation

我从这些说明中得到了建议:我通过添加此行修改了MockingKernel源代码

  

[组件:   System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]

到项目Ninject.MockingKernel和Ninject.MockingKernel.Moq中的AssemblyInfo.cs。 然后我重新编译了解决方案,安装了dll并且我的代码开始工作了!

我希望这对你有用。