在Blend设计时使用Moq

adr*_* h. 5 silverlight wpf design-time mvvm expression-blend

这可能有点像,但假设我想在ViewModel中使用Moq来创建一些设计时数据,如下所示:

public class SomeViewModel
{
   public SomeViewModel(ISomeDependency dependency)
   {
      if (IsInDesignMode)
      {
         var mock = new Mock<ISomeDependency>();
         dependency = mock.Object; // this throws!  
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

模拟可以设置为做一些事情,但你明白了.

我的问题是,在Blend的设计时,这段代码抛出一个InvalidCastException,消息沿着"无法将类型为'Castle.Proxies.ISomeDependencyProxy2b3a8f3188284ff0b1129bdf3d50d3fc'的对象强制转换为'ISomeDependency'." 虽然这不一定看起来与Moq相关但与Castle相关,我希望Moq示例有帮助;)

知道为什么会这样吗?

谢谢!

小智 1

我遇到了类似的问题,只不过强制转换来自动态生成的程序集 (Blend_RuntimeGeneeratedTypesAssembly) 类型,该类型伪装成我的类型之一。

没有明显的原因。

这让我抓狂。