我在接口上有一个看起来像这样的方法,我想用Rhino Mocks将它存根:
TValue GetPropertyOfExistingObject<TValue>(long id, Expression<Func<T, TValue>> propertyExpression);
Run Code Online (Sandbox Code Playgroud)
执行存根的代码如下所示:
var service = MockRepository.GenerateStub<IQuoteService>();
service.Stub(s => s.GetPropertyOfExistingObject(1, q => q.QuoteNumber)).Return(1234);
Run Code Online (Sandbox Code Playgroud)
请注意,该方法中的一个参数是a Expression<Func<T1, T2>>
,并且此存根未返回指定的值.我知道我可以通过使用WhenCalled()来做到这一点,但我想知道Stub()是否应该使用表达式参数或者我是否只是做错了.
根据我的阅读,放入TempData的信息将用于当前请求和下一个请求(以便您可以跨重定向传递信息).问题是,如果我浏览到不重定向的控制器操作,TempData中的信息仍将存在于下一个请求中.我正在使用TempData存储显示给用户的信息性消息,所以现在我也在第二个屏幕上获得第一个屏幕的消息.
在控制器生命周期中是否有足够的时间在TempData不再使用时清除它?
我们今天遇到了一个有趣的问题.似乎如果使用铲运算符在ActiveRecord模型上连接字符串属性,它不会使模型变脏.例如:
e = Employee.first
e.name << "asdf"
e.name_changed? # returns false
e.changed? # returns false
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为铲子操作员更新一个字符串而不复制它,其中+ =运算符将复制该字符串.我不知道如果你使用铲子操作员,ActiveRecord怎么可能知道有什么改变.
有没有人见过这个?解决方案只是使用+=
而不是<<
连接字符串时?
我有这种方法:
public void DoSomething<T>(Expression<Func<T, object>> method)
{
}
Run Code Online (Sandbox Code Playgroud)
如果这样调用此方法:
DoSomething(c => c.SomeMethod(new TestObject()));
Run Code Online (Sandbox Code Playgroud)
...如何获取传递给SomeMethod()的参数的值?
如果参数是值类型,则可以使用:
var methodCall = (MethodCallExpression)method.Body;
var parameterValue = ((ConstantExpression)methodCall.Arguments[0]).Value;
Run Code Online (Sandbox Code Playgroud)
但是,当我传递引用类型时,methodCall.Arguments [0]是MemberExpression,而且我似乎无法弄清楚如何编写代码以从中获取值。
我正在寻找一些违反单一责任原则的代码示例.不要向我展示鲍勃叔叔的书籍或网站上的任何例子,因为这些都是在互联网上贴满的,就像这样:
interface Modem
{
public void dial(String pno);
public void hangup();
public void send(char c);
public char recv();
}
Run Code Online (Sandbox Code Playgroud) 我正在使用LINQ to SQL来调用存储过程.这个存储过程当前返回一个结果集,然后raiserror
在检索结果集后触发一些语句(我正在编写存储过程的测试,如果你想知道为什么我这样做).
当LINQ to SQL调用proc并且它返回结果集时,它似乎忽略了我抛出的所有错误,因为它得到了结果集.有没有办法让它在raiserror
从SQL 执行时始终抛出SqlException ?
我有CSS看起来像这样......
.ColorSeparatorArea
{
background-color: #3d3d77;
height: 1px;
}
Run Code Online (Sandbox Code Playgroud)
...然后我将该样式应用于DIV元素:
<div class="ColorSeparatorArea"></div>
Run Code Online (Sandbox Code Playgroud)
它在非IE浏览器中工作正常,但在IE中,它将div的高度设置为一行文本的高度,它不会让我更小.有谁知道如何解决这个问题?
我有一个网页,我有一个嵌套在TD标签内的表(不要因为这个而点燃我,我有充分的理由这样做).当页面加载时,我想将嵌套表的高度扩展为包含它的TD单元格的高度.目前我使用这样的代码:
$(document).ready(function()
{
$('.TakeOffItemGroupTable').each(function()
{
$(this).height($(this).closest('td').height());
});
}
Run Code Online (Sandbox Code Playgroud)
这样可行,但是如果页面上有很多要调整大小的表,IE8可能需要大约20秒才能完成(当然,FF需要一两秒钟).那是因为$(this).height($(this).closest('td').height());
:
有没有其他方法,我可以让嵌套表始终采取其容器的高度?
我尝试过的事情:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<table border="1" >
<tr>
<td width="100px">JKLSD FASJDFKLSA DFKLADFJL KASDJFKLSAD JFSAKLDF</td>
<td style="height: 100%;">
<table style="height:100%;" border="1">
<tr>
<td>
I should be 100% tall!
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这适用于Firefox但不适用于IE.
css ×2
html ×2
.net ×1
asp.net-mvc ×1
c# ×1
lambda ×1
linq-to-sql ×1
rhino-mocks ×1
ruby ×1
single-responsibility-principle ×1
sql-server ×1