小编Pet*_*lly的帖子

使用Moq时(Func <bool>)方法

我找不到在Moq中使用When方法的示例

When(Func<bool> condition);
Run Code Online (Sandbox Code Playgroud)

该方法的目的/用途是什么?请提供一个代码示例,演示一个有用的场景.

c# moq

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

Stylecop设置在什么时候停止有用并开始变得烦人?

我在一个团队中工作,我们在StyleCop中使用了广泛的规则集,我想知道关于这样一个工具停止有用并且开始变得烦人的一般观点的想法.我们还使用GhostDoc,因此代码中充斥着XML注释,这使得代码更难以阅读并因此进行审查.我对XML注释没有任何问题,并且发现它们在某些地方非常有用,但它们是否真的需要在每个字段和属性上?

我们有一个令人钦佩的目标:"每个项目在构建时必须有0个警告"但当然这个目标需要违背合理的StyleCop规则集,否则会浪费宝贵的时间来"修复"StyleCop警告的原因.

有什么想法?

编辑 我现在真的想知道什么是像ALL ALL的stylecop工具的论据?为什么不放弃它,让合理的编码标准和良好的代码审查来处理其余的事情?特别是在一支优秀的团队中?当然,获得0警告的任务实际上会增加价值,因为所有警告都是相关的.

我认为GhostDoc的唯一优势是它可以为您从头开始编写XML注释节省大量时间.我不认为你应该接受生成的评论而不进行编辑 - 这可能适得其反.

这是由GhostDoc生成的xml注释满足的Stylecop规则(SA1642:ConstructorSummaryDocumentationMustBeginWithStandardText)的组合 - 是否在一天结束时添加任何值?

    /// <summary>
    /// Initializes a new instance of the <see cref="SomeCustomType"/> class.
    /// </summary>
    /// <param name="someParameter">The someParameter.</param>
    public SomeCustomType(string someParameter)
    {
    }
Run Code Online (Sandbox Code Playgroud)

.net stylecop xml-comments ghostdoc

21
推荐指数
2
解决办法
5360
查看次数

使用Data Annotation验证DateTime(日期和小时)

我有以下代码:

        [DisplayName("58.Date and hour of birth")]
        [DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy hh:mm")]
        [Range(typeof(DateTime), "1/1/2011", "1/1/2016")]
        [RequiredToClose]
        public object V_58 { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想强制包含时间(格式为hh:mm)而不仅仅是日期.此代码将1/1/2011视为有效,因为它不包含小时,有关如何表达正确格式的任何线索?(dd/mm/yyyy hh:mm)

asp.net-mvc datetime data-annotations

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

仅为登录用户显示菜单项

我是ASP.NET MVC的新手,正在使用该框架的1.0版本.我有一个site.master页面,其中包含以下硬编码菜单

<div id="menucontainer">
    <ul id="menu">              
    <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
    <li><%= Html.ActionLink("Drivers", "List/?category=Drivers", "Product")%></li>
    <li><%= Html.ActionLink("Irons", "List/?category=Irons", "Product") %></li>
    <li><%= Html.ActionLink("Wedges", "List/?category=Wedges", "Product") %></li>
    <li><%= Html.ActionLink("Putters", "List/?category=Putters", "Product") %></li> 
    </ul>  
 </div>
Run Code Online (Sandbox Code Playgroud)

我想在用户登录时在菜单上显示一个额外的项目.像"查看我的房源"之类的东西.我以肮脏的hacky方式做这件事没问题,所以我试过了

<% if (User.Identity.IsAuthenticated) ...
Run Code Online (Sandbox Code Playgroud)

User在这种情况下无效.我的问题是如何仅在用户登录时显示额外的菜单项?

asp.net-mvc

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

空文字参数类型重载决议

可能重复:
当传递空值时,方法重载决策系统如何决定调用哪个方法?

这是一个关于为什么编译器在传递null文字作为参数时选择某个重载的问题,由string.Format重载证明.

ArgumentNullException当为args参数使用null literal时,string.Format会抛出一个.

string.Format("foo {0}", null);
Run Code Online (Sandbox Code Playgroud)

Format方法有一些重载.

string.Format(string, object);
string.Format(string, object[]);
string.Format(IFormatProvider, string, object[]);
Run Code Online (Sandbox Code Playgroud)

运行反编译代码,从第二个方法抛出null文字args的异常.但是,下面的示例调用上面的第一个方法(如预期的那样)然后调用第二个调用第三个方法最终返回"foo".

string x = null;
string.Format("foo {0}", x);

string y;
string.Format("foo {0}", y = null);
Run Code Online (Sandbox Code Playgroud)

但是string.Format("foo {0}", null)调用上面的第二个方法并导致null异常.为什么编译器在这种情况下决定null文字与第二个方法签名匹配而不是第一个?

.net c#

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

BackgroundImage在Windows窗体中的位置

我将BackgroundImageWindows窗体设置为200 x 200图像.表格是500 x 500.我希望图像锚定在表单的右下角.但是,我唯一可用的选项是BackgroundImageLayout属性 - 将此设置为"无"会导致图像锚定在左上角.我怎么能改变这个?

注意:我使用的是.NET 2.0

winforms

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

在构造函数中将整数字段/属性分配为零

在最近的代码审查期间,一位同事建议,对于具有4个int属性的类,在构造函数中将每个属性赋值为零将导致性能损失.

例如,

    public Example()
    {
        this.major = 0;
        this.minor = 0;
        this.revision = 0;
        this.build = 0;
    }
Run Code Online (Sandbox Code Playgroud)

他的观点是,这是多余的,因为它们默认设置为零,并且您通过两次基本上执行相同的任务来引入开销.我的观点是,如果一个在所有调用此构造是很清楚之后存在,这是更具可读性(有几个构造函数)为对象的国家的意图性能损失可以忽略不计.

你怎么看?这里有值得关注的性能提升吗?

c#

7
推荐指数
2
解决办法
150
查看次数

设计一个只有一些实现需要IDisposable的接口

您正在设计一个界面 IFoo

public interface IFoo
{
   void Bar();
}
Run Code Online (Sandbox Code Playgroud)

假设这个接口有五种实现方式.其中两个实现也应该IDisposable在使用非托管资源时实现.从调用者的角度来看,如果IFoo实现它将是最简单的,IDisposable因此任何IFoo可以包含在using块中,但是当然一些实现将被空Dispose()方法所包含.只是好奇还有其他方法吗?

.net c#

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

如何从外部javascript(js)文件在网页中添加样式标记

我正在开发一个网页,我想从外部javascript文件中动态添加样式标记.

我使用的代码不起作用

this.addStyle = function()
    {
        if (! this.inited) {
          alert("not inited");
          return;
         }
        var head = document.getElementsByTagName('head')[0],
        style = document.createElement('style'),
        rules = document.createTextNode('.bodys { bgcolor="red"; }');
        style.type = 'text/css';
        if(style.styleSheet)
            style.styleSheet.cssText = rules.nodeValue;
        else style.appendChild(rules);
            head.appendChild(style);
    }
Run Code Online (Sandbox Code Playgroud)

javascript

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

在没有WinForm控件的主线程上调用方法来调用Invoke或BeginInvoke

我想在后台线程上运行一个操作.当它完成后,我想检查发生的任何错误,并将它们重新抛出我的原始线程.

我正在使用背景工作者.在RunWorkerCompleted事件处理程序中抛出异常会导致未处理的异常 - 如果事件处理程序在后台线程上运行,这是有意义的.如果我有一个winform控件,我可以调用Invoke或BeginInvoke,但我没有在这个对象中使用winform控件,尽管它是一个winform项目.

如何重新抛出backgroundworker中发生的异常?

private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        if (e.Error != null)
        {              
            // I want to throw an exception here, without causing an unhandled exception and without being able to call Invoke or BeginInvoke on a WinForm control. 
        }
        else if (e.Cancelled)
        {
           // Do something useful
        }
        else
        {
            if (e.Result != null)
            {
               // Do something with the result
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我原以为RunWorkerCompleted事件处理程序将在原始调用线程上运行.也许背景工作者不是我在这种情况下所需要的.

c# multithreading backgroundworker

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