小编Jon*_*ger的帖子

Rhino Mocks:当我的一个参数是Expression <Func <T1,T2 >>时,我可以使用Stub()吗?

我在接口上有一个看起来像这样的方法,我想用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()是否应该使用表达式参数或者我是否只是做错了.

rhino-mocks

6
推荐指数
1
解决办法
2310
查看次数

ASP.NET MVC:在执行控制器方法后清除TempData

根据我的阅读,放入TempData的信息将用于当前请求和下一个请求(以便您可以跨重定向传递信息).问题是,如果我浏览到不重定向的控制器操作,TempData中的信息仍将存在于下一个请求中.我正在使用TempData存储显示给用户的信息性消息,所以现在我也在第二个屏幕上获得第一个屏幕的消息.

在控制器生命周期中是否有足够的时间在TempData不再使用时清除它?

asp.net-mvc

6
推荐指数
1
解决办法
9673
查看次数

Ruby on Rails:使用铲运算符更新模型上的字符串属性不会使模型变脏

我们今天遇到了一个有趣的问题.似乎如果使用铲运算符在ActiveRecord模型上连接字符串属性,它不会使模型变脏.例如:

e = Employee.first
e.name << "asdf"
e.name_changed? # returns false
e.changed? # returns false
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为铲子操作员更新一个字符串而不复制它,其中+ =运算符将复制该字符串.我不知道如果你使用铲子操作员,ActiveRecord怎么可能知道有什么改变.

有没有人见过这个?解决方案只是使用+=而不是<<连接字符串时?

ruby ruby-on-rails

5
推荐指数
1
解决办法
1078
查看次数

如何在表达式中获取引用类型的值?

我有这种方法:

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,而且我似乎无法弄清楚如何编写代码以从中获取值。

.net c# lambda

4
推荐指数
1
解决办法
1588
查看次数

违反单一责任原则的最佳例子是什么?

我正在寻找一些违反单一责任原则的代码示例.不要向我展示鲍勃叔叔的书籍或网站上的任何例子,因为这些都是在互联网上贴满的,就像这样:

interface Modem
{
    public void dial(String pno);
    public void hangup();
    public void send(char c);
    public char recv();
}
Run Code Online (Sandbox Code Playgroud)

single-responsibility-principle solid-principles

3
推荐指数
1
解决办法
3503
查看次数

LINQ to SQL:返回结果集后,将忽略存储过程中的错误

我正在使用LINQ to SQL来调用存储过程.这个存储过程当前返回一个结果集,然后raiserror在检索结果集后触发一些语句(我正在编写存储过程的测试,如果你想知道为什么我这样做).

当LINQ to SQL调用proc并且它返回结果集时,它似乎忽略了我抛出的所有错误,因为它得到了结果集.有没有办法让它在raiserror从SQL 执行时始终抛出SqlException ?

sql-server linq-to-sql

3
推荐指数
1
解决办法
1414
查看次数

Internet Explorer忽略了CSS中设置的非常小的高度

我有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的高度设置为一行文本的高度,它不会让我更小.有谁知道如何解决这个问题?

html css internet-explorer

2
推荐指数
1
解决办法
1501
查看次数

如何让TABLE增长到与容器相同的高度?(或者,与IE JavaScript的竞争缓慢)

我有一个网页,我有一个嵌套在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());:

  • Chrome中1ms
  • 在Firefox中18ms
  • 在IE8中330毫秒

有没有其他方法,我可以让嵌套表始终采取其容器的高度?

我尝试过的事情:

<!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.

html css internet-explorer

1
推荐指数
1
解决办法
1325
查看次数