小编Rob*_*ine的帖子

我应该使用IEnumerable或IList?

任何人都可以告诉我何时应该使用它们.

例如,我想当我想访问集合的.Count或单个项目时,我应该使用IList,对吗?

谢谢.

c# ienumerable ilist

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

什么人使用JScript.Net?

我很想知道谁使用JScript.Net以及使用什么类型的应用程序.每当我阅读MSDN .Net文档时,我总会注意到JScript示例,但多年来我一直是C#dev,我从来没有真正知道任何人使用它.

人们使用它的是什么类型的应用程序,以及它在灵活性,功能和一般使用方面如何衡量C#?

[ 编辑:只是为了澄清 - 我不是在问JScript.Net 什么,我问的是人们实际使用它是什么 - 即有兴趣知道实际的使用场景以及人们如何找到它的工作方式]

.net asp.net jscript.net

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

是否可以在log4net配置中使用通配符记录器名称?

在我的应用程序中,我使用log4net,所有类型都根据其类型创建自己的记录器 - 例如:

private static readonly ILog Log = LogManager.GetLogger(typeof(Program));
Run Code Online (Sandbox Code Playgroud)

在我开发时,我将根记录器保留在DEBUG上,以便从我的代码中捕获所有日志输出.

但是,第三方组件也使用相同的方法,但是每秒生成100条日志消息,我都不感兴趣.

是否可以在记录器配置中使用某种通配符,强制所有记录器仅记录WARN,例如:

 <logger name="com.thirdparty.*">
    <level value="WARN"/>
  </logger>
Run Code Online (Sandbox Code Playgroud)

[上面的确切示例,使用*不起作用]

.net c# log4net

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

ReSharper如何知道这种返回类型永远不会为空?

我正在使用ReSharper 5.0,并且想知道它的代码分析功能如何assemblies == null通过注释"表达式始终为假" 来强调以下内容.

var directory = new DirectoryInfo("somedir");
FileInfo[] assemblies = directory.GetFiles("*.dll");

if (assemblies == null <<--- this is highlighted with "Expression is always false"
    || assemblies.Length == 0)
{
  _log.Warn("No assemblies found");
}
Run Code Online (Sandbox Code Playgroud)

我知道返回类型是否为值类型,而不是.我也理解是否存在某种代码契约或元数据陈述.GetFiles()永远不会返回null.但我不认为有.

那么 - 它怎么知道这个?我是否遗漏了一些明显的东西,或者ReSharper是否拥有一些特权知识,例如关于框架方法的内部元数据列表?或者它实际上是" 内省 "内部代码并解决它?

.net c# resharper static-analysis

16
推荐指数
2
解决办法
2086
查看次数

为什么许多程序员将逗号移到下一行?

请告诉我,下面这种风格的神圣力量是什么:

var javascript = new Language(
  'Brendan Eich'
, new Date(1995, 0, 1)
, ['C', 'Java', 'Scheme']
);
Run Code Online (Sandbox Code Playgroud)

为什么许多程序员使用这种风格?它有什么好处?例如,

var javascript = new Language(
  'Brendan Eich',
  new Date(1995, 0, 1),
  ['C', 'Java', 'Scheme']
);
Run Code Online (Sandbox Code Playgroud)

我比以前更喜欢.谢谢.

javascript

16
推荐指数
4
解决办法
4622
查看次数

使用带有扩展方法的Enumerable.ToDictionary时,"CLR检测到无效程序"

一位同事给我发了一个有趣的代码示例,它InvalidProgramException在运行时崩溃了("CLR检测到无效程序").

问题似乎发生在JIT时间,因为这编译得很好,但在调用"违规"行的方法之前抛出异常 - 我猜它正在JIT中.

有问题的行是调用Enumerable.ToDictionary并传入a Func作为第二个参数.

如果Func参数是用lambda完全指定的,它就可以工作; 如果将其指定为方法组,则失败.当然这两个是等价的吗?

这让我感到难过(以及发现它的同事!) - 这看起来肯定是一个JIT错误.

[编辑:对不起 - 我在代码示例中以错误的方式得到了通过和失败的情况- 现在已经更正(上面的描述是正确的)]

有人有解释吗?

using System;
using System.Linq;

internal class Program
{
    private static void Main(string[] args)
    {
        Test.Try();
    }
}

public class Test
{
    public static readonly int[] integers = new[] { 1, 3, 5 };
    public static void Try()
    {
        var line = new Line { A = 3, B = 5 };

        // PASSES
        var dict …
Run Code Online (Sandbox Code Playgroud)

c# linq clr extension-methods

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

如何使一个ASP.NET MVC站点从另一个"派生"

我的问题类似于"ASP.NET 2项目共享相同的文件",但与ASP.NET MVC倾斜.

基本上,我们有两个站点,一个主要基于另一个站点(大约90%的视图,控制器,图像,第二个与第一个相同).但是,在某些情况下,视图可能不同,或者第二个站点中的控制器可能与第一个不同.

在ASP.NET MVC中有没有简单的方法来实现这一点?

到目前为止,我们已经考虑使用链接文件来完成两个完全独立的项目,其中第二个项目从第一个项目共享所需的文件.

这种方法的一个问题是第二个项目中的大多数页面实际上并不存在于虚拟目录中,这使得调试很麻烦 - 您必须发布才能生成文件以便进行调试.

有没有人有更好的方法,或者这种方法可以简化的方法?

c# asp.net asp.net-mvc

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

如何从URL或路径数据中获取控制器类型和操作信息?

在给定的情况下,如何获取将要调用的控制器操作(方法)和控制器类型System.Web.Routing.RouteData

我的情况是这样的 - 我希望能够在动作OnActionExecuting方法中执行某些动作(或不动作).

但是,我经常想知道当前的行动,而不是被称为"根"行动; 通过这个我的意思是我可能有一个名为"登录"的视图,这是我的登录页面.该视图可以包括另一个局部视图"LeftNav".当OnActionExecuting为LeftNav调用时,我希望能够确定它确实被称为Login的"root"aciton.

我意识到,通过调用RouteTable.Routes.GetRouteData(actionExecutingContext.HttpContext),我可以获得"root"请求的路由,但是如何将其转换为方法和类型信息?

到目前为止,我唯一的解决方案是:

 var routeData = RouteTable.Routes.GetRouteData(actionExecutingContext.HttpContext)
 var routeController = (string)routeData.Values["controller"]; 
 var routeAction = (string)routeData.Values["action"];
Run Code Online (Sandbox Code Playgroud)

这个问题是"routeController"是删除了"Controller"后缀的控制器名称,并且不是完全限定的; 即它是"登录",而不是"MyCode.Website.LoginController".

我宁愿得到一个实际的Type,MethodInfo如果可能的话,或者至少是一个完全合格的类型名称.

有什么想法或替代方法吗?

[ 编辑 - 这是ASP.Net MVC 1.0]

c# asp.net asp.net-mvc asp.net-mvc-routing

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

将IEnumerable <T>转换为IList

如果方法采用System.Collections.IList类型的参数,我可以合法/安全地传递类型的值System.Collections.Generic.IEnumerable<T>吗?

我将非常感谢为什么这是可能的以及在方法内部使用T时对象实际发生的事情的彻底解释IEnumerable<T>.

它被转换为Object的基类型吗?

是用作System.Collections.IEnumerable

是否存在会导致问题(即性能问题)的情况?

先谢谢你,约翰

.net generics ienumerable ilist

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

在Visual Studio中,我可以创建一个文件来运行另一个自定义工具吗?(在这种情况下使用Xsd2Code)

我想尝试在Visual Studio中使用自定义工具时,可以更改一个文件的内容,触发另一个文件的自定义工具.

我的情况是这样的:

在Visual Studio C#项目中,我有一个"master.xsd"xml架构,其中包含其他几个其他xsd文件.我正在使用Xsd2Code Visual Studio自定义工具从架构生成.cs.当master.xsd本身发生变化时,这可以正常工作,但是当其他xsds之一发生变化时,我希望自定义工具在文件master.xsd上运行.

有没有办法让一个文件触发另一个自定义工具?

[编辑 - 有关我为什么要使用自定义工具的详细信息]

目前我们有一个GenerateFiles.bat文件,它从命令行调用Xsd2Code来生成模式中的代码(如下面的MattDavey所建议的).这个工作,太慢了.

问题在于,每次构建Xsd2Code都会运行,但是由于很多其他项目都依赖于这个带有模式的项目,所以即使可能没有任何改变,它们也会重新编译.实际结果是,即使对单元测试进行微小改动,也只有一半的项目重新编译.这就是为什么我们一直在寻找自定义工具方法,只有在架构发生变化时才生成代码文件.

c# visual-studio-2010 customtool xsd2code

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