注意我关闭了本地化的其他票证.
所以我遇到了一个问题,就像我看到其他海报在使用NuGet安装FluentNhibernate之后产生的:
错误
Could not load file or assembly 'NHibernate, Version=3.0.0.2001, Culture=neutral,
PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)
Run Code Online (Sandbox Code Playgroud)
我在stackOverflow答案和其他博客上看到了答案是:
Add-BindingRedirect
Run Code Online (Sandbox Code Playgroud)
但是,这还没有解决我的问题,运行该命令的所有结果是:
PM> Add-BindingRedirect
Name OldVersion NewVersion
---- ---------- ----------
NHibernate 0.0.0.0-3.0.0.4000 3.0.0.4000
Run Code Online (Sandbox Code Playgroud)
当我从NuGet安装Fluent Nhibernate时,它说它的依赖是Nhibernate 3.0.0.2001,但是它安装了Nhibernate 3.0.0.4000
我究竟做错了什么?
我试图用Moq模拟我的存储库.我试图模拟我的存储库上的所有查询方法.我已经成功地模拟了返回所有类型的方法.
例:
mockProductRepo.Setup(x => x.GetAll()).Returns(products.AsQueryable());
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了一个模拟使用其他方法的方法的问题.例如,我的"FilterBy"方法返回对我的"GetAll"方法的调用,其中Where子句带有表达式
示例:存储库方法
public virtual IQueryable<T> FilterBy(Expression<Func<T, bool>> expression)
{
return GetAll().Where(expression);
}
Run Code Online (Sandbox Code Playgroud)
踢球者是我希望在帮助器类中模拟存储库中的所有方法:
public static IRepository<Product> MockProductRepository(params Product[] products) {
var mockProductRepo = new Mock<IRepository<Product>>();
mockProductRepo.Setup(x => x.GetAll()).Returns(products.AsQueryable());
mockProductRepo.Setup(x => x.FilterBy(It.IsAny<Expression<Func<Product, bool>>>())).Returns(products.AsQueryable().Where(It.IsAny<Expression<Func<Product, bool>>>()));
return mockProductRepo.Object;
}
Run Code Online (Sandbox Code Playgroud)
因此,有没有一种方法可以将其设置为调用另一个模拟方法,而不是我在上面的示例中使用它的方式,而不是上面模拟的FilterBy方法?
UPDATE
我尝试过设置:
mockProductRepo.Setup(x => x.FilterBy(It.IsAny<Expression<Func<Product, bool>>>())).Returns(mockProductRepo.Object.GetAll().Where(It.IsAny<Expression<Func<Product, bool>>>()));
Run Code Online (Sandbox Code Playgroud)
它总是错误"值不能为空.参数:谓词".根据我对堆栈跟踪的理解,它正在抱怨,因为我没有传递"Where"一个谓词.我不确定如何在设置中表示传递给FilterBy方法的表达式在过滤器Where中使用.
所以我仍然是C#的新手,并且使用接口,当我认为我理解它们时,我意识到我并不完全.我发现我在寻求一些澄清的困惑是,当你创建一个接口,并有一个继承自它的类
public Interface ISomeInterface
{
//some methods/properties
}
public class FooClass : ISomeInterface
{
//implemented ISomeInterfaces methods/properties
}
Run Code Online (Sandbox Code Playgroud)
并且在程序中的某个实现中使用此类对象
public class BarClass
{
private ISomeInterface _someInterface;
public BarClass(ISomeInterface someInterface)
{
_someInterface = someInterface;
}
//rest of class
}
Run Code Online (Sandbox Code Playgroud)
我的困惑是为什么我这样设置它.我以为我会实例化一个FooClass类型的新对象,并在构造函数中使用类型为FooClass的对象:
public class BarClass
{
private FooClass _fooClass;
public BarClass(FooClass fooClass)
{
_fooClass = fooClass;
}
//rest of class
}
Run Code Online (Sandbox Code Playgroud)
理解这一点我错过了什么?我不认为我会直接声明接口的对象?
提前致谢.
为什么如果在方法上声明返回类型,则必须在该方法的范围内指定返回值?意思是,如果我的方法中有一个If/Switch,我不能指定返回"ALONE"而不是主方法体中?唯一的解决方法是将嵌套过程返回的值赋给变量并返回方法主体中的变量吗?
例:
public Int GetNum()
{
var a = 1;
switch(a)
{
case 1:
return 1 + 5;
default:
return a;
}
return a; //Why must I specify this return if it is going to hit my switch statement
//and return some int.
}
Run Code Online (Sandbox Code Playgroud) 所以我试图简单地从母版页中加载.css文件.
主页Admin.Master和css文件AdminView.css都在/ views/shared文件夹中.我在主页面的部分中粘贴了以下链接标记.
我试过了两个:
<link href="<%: ResolveUrl("AdminView.css")%>" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)
和
<link href="AdminView.css" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)
以及其他所有组合(〜/ views/shared/adminview.css或/adminview.css....etc)
当在Firebug中查看它加载的内容时,它总是返回"未找到资源".
注意:我已经仔细检查了名称和拼写.
它的这些繁琐的东西应该不是那么困难.
因此页面分解了一些部分,每个部分都有一个'a'标记.点击链接时会触发调用javascript函数的'onclick'事件.
我在页面顶部添加了一个链接,当你点击链接时,它会调用一个JQuery函数.click,它将调用所有'a'标签'onclick'事件.
这可能吗?
另一个coveat是在'onclick'事件中,被调用的函数是传递父DIV id的ID.所以我真的需要触发'onclick'事件而不是直接在JQuery函数中调用javascript函数.