首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Castle.DynamicProxy.IProxyTargetAccessor而不是Moq引用Castle.Core?

如何从Castle.DynamicProxy.IProxyTargetAccessor而不是Moq引用Castle.Core?
EN

Stack Overflow用户
提问于 2019-07-03 14:31:01
回答 1查看 305关注 0票数 0

我有一个依赖于MoqCastle.Core的测试,并试图引用接口Castle.DynamicProxy.IProxyTargetAccessor

问题是MoqCastle.Core代码嵌入其中(全部或部分,不确定),因此Castle.DynamicProxy.IProxyTargetAccessor在这两个程序集中都以public的形式出现。

现在,我正在使用Castle.Core显式地创建一个动态代理(由于可见性范围减小,不能使用嵌入在Moq中的代码),因此代理实现了接口的Castle.Core风格。

尴尬,但我不知道如何告诉编译器使用正确的界面,或如果是完全可能的。

编辑1

这就是问题是如何在骑士身上表现出来的:

但是点击任何选择都没有用。可能是Rider,因为它必须使用一些C#语法来显式地针对Castle.Core程序集。但不确定它是否存在。

我可以使用反射重写代码,但我很好奇这是否有编译时解决方案。

编辑2

删除对Castle.Core的引用无效:

代码语言:javascript
复制
  DynamicProxyFactory.cs(20, 26): [CS0122] 'ProxyGenerator' is inaccessible due to its protection level
  DynamicProxyFactory.cs(27, 67): [CS0122] 'IInterceptor' is inaccessible due to its protection level
  DynamicProxyFactory.cs(43, 38): [CS0122] 'IInterceptor' is inaccessible due to its protection level
  DynamicProxyFactory.cs(91, 31): [CS0122] 'IInvocation' is inaccessible due to its protection level

这是因为Moq没有真正引用Castle.Core。相反,它可能是在浸入的帮助下嵌入内部的。但显然它修改了我想要使用的某些接口的可见范围。因此,在使用它们时会出现编译错误。

编辑3

由反射镜提供:

可以看到,Castle.DynamicProxy.IInterceptorMoq中是internal。而它在最新版本的Castle.Core中是公开的。

EN

回答 1

Stack Overflow用户

发布于 2019-07-03 16:34:06

因此,我没有找到如何显式地引用程序集中的类型,但是https://stackoverflow.com/users/5101046/scott-hannen的一条评论帮助我认识到,我可以将Moq升级到最新版本,它不再嵌入Castle.Core,而是正常地引用它。解决了我的障碍。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56872402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档