Error 2 Unable to cast object of type 'Castle.Proxies.IADEmployeeRepoProxy_1' to type 'MVVMSupport.TestHarness.Data.IADEmployeeRepo'. D:\Users\kicksagnome\Desktop\MVVMSupport\MVVMSupport.TestHarness\App.xaml 16 13 MVVMSupport.TestHarness
Mock<IADEmployeeRepo> repo = new Mock<IADEmployeeRepo>();
repo.Setup<List<ADEmployee>>(r => r.GetAllEmployees())
.Returns(new List<ADEmployee>() { new ADEmployee() { FirstName = "Ryan Butcher" } });
Bind<IADEmployeeRepo>().ToConstant(repo.Object); //Also tried Bind<IADEmployee>().ToMethod(context => repo.Object);
它在设计器的第一次加载时运行良好,并且每次更改设计数据时都会失败并重建解决方案。
我知道这不是moq的用法,所以问题是......
1.)有没有办法解决这个问题?
2)我应该如何添加设计时数据?
答案 0 :(得分:1)
嗯,你有几种选择。 您可以在视图模型中使用不同的选项,具体取决于“IsInDesignMode”,并将您的设计数据驻留在那里。那将是你快速而肮脏的选择。
更好的选择是拥有DataService和Mock one(或DesignDataService),并且在ViewModelLocator中,您将在“IsInDesignMode”中使用它。
从那里,只需将您需要的任何内容添加到DataService的接口,此服务将在构建时注入到您的视图模型中,然后您可以简单地使用以下内容:
MyData = DataService.GetData();
在真实数据服务中,您将获取您的数据,在设计/模拟中,您可以根据自己的喜好假装,轻松显示您的设计数据。
如果您有任何其他问题,或者需要更多代码,请与我联系。