簡體   English   中英

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

[英]How to reference Castle.DynamicProxy.IProxyTargetAccessor from Castle.Core rather than Moq?

我有一個同時依賴MoqCastle.Core的測試,並嘗試引用Castle.DynamicProxy.IProxyTargetAccessor接口

問題是MoqCastle.Core代碼嵌入到其中(不確定全部或部分),因此Castle.DynamicProxy.IProxyTargetAccessor在這兩個程序集中都顯示為public

現在,我正在顯式地使用Castle.Core創建動態代理(由於可見性范圍減小,無法使用Moq嵌入的代碼),因此該代理實現了接口的Castle.Core風格。

令人尷尬,但是我不知道如何告訴編譯器使用正確的接口,或者是否有可能。

編輯1

問題是如何在Rider中顯現出來的: 在此處輸入圖片說明

但是單擊任何選擇都無濟於事。 可能是一個Rider錯誤,因為它必須使用某些C#語法來明確地定位Castle.Core程序集。 但是不確定它是否存在。

我可以使用反射來重寫代碼,但是我很好奇這是否具有編譯時解決方案。

編輯2

刪除對Castle.Core引用不起作用:

  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 相反,它可能是在ilmerge的幫助下嵌入其中的。 但是顯然,它修改了我要使用的某些接口的可見性范圍。 因此,使用它們時會出現編譯錯誤。

編輯3

由Reflector提供:

在此處輸入圖片說明

正如人們所看到Castle.DynamicProxy.IInterceptorMoqinternal 雖然它是在Castle.Core的最新版本中Castle.Core

因此,我沒有找到如何從程序集中顯式引用類型,但是https://stackoverflow.com/users/5101046/scott-hannen的注釋使我意識到,可以將Moq升級到最新版本,而無需不再嵌入Castle.Core ,但通常引用它。 那解決了我的障礙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM