Tag: CSharp

  • C#遍历文件夹下所有文件最短代码

    以前用C#遍历文件夹下所有的文件,都是写一个递归来做,最近发现DotNet 4.0里直接有了递归遍历文件夹访问所有文件的API,返回的是IEnumerable<string>,直接用一个foreach就可以遍历了。下面是代码示例

  • C#实现接口类的时候返回一个完成的Task对象

    有时候实现一些接口类的全部方法,某些方法里必须返回一个task,创建一个新任务又怕开销太大,搜了一下,发现下面是一个比较常见的做法 return Task.FromResult(null); 如果用DotNet 4.6的话,就更简单了,直接返回Task.CompletedTask就可以了。 https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.completedtask.aspx

  • [C#]Convert.ChangeType Invalid cast from ‘System.String’ to ‘System.Guid’解决方法

    好像是第三次在写代码的时候遇到这个坑了,在利用反射调用Convert.ChangeType进行类型推算自动转换的时候,总是无法完成string到guid的转换,并且报错 An exception of type ‘System.InvalidCastException’ occurred in mscorlib.dll but was not handled in user code Additional information: Invalid cast from ‘System.String’ to ‘System.Guid’. 解决方法便是对Guid的类型对一个单独的处理,通过Guid.Parse,对于其他类型,继续使用Convert.ChangeType

  • NLog把log同时写入控制台和文件

    之前的这篇博文介绍了如何快速在DotNet项目里启用NLog,现在介绍一下如何配置NLog同时把log写入到多个目标,比如在屏幕数据的同时,也写入到日志文件,或者写入进数据库等等。

  • C#项目NLog快速上手篇

    在猿区里上班,一个基本功就是能自动化的事情就坚决不要手工做。撸主的工作里,大部分的用来解放双手的自动化小工具都是用C#完成的,在写小工具的时候,很多时候需要一个日志模块,来记录工具运行时的错误信息,为日后抓虫提供铁证。NLog就是一个非常轻量灵活的C#日志框架。 这里就介绍一下NLog的最简单的用法和配置,本博文仅适合那些像撸主一样,只想知道怎么快速使用,而没兴趣关心为什么这样能用的童鞋。

  • [C#]HttpContext在ASP.NET MVC Controller里为null的解决方法

    在MVC的controller里默认是访问不到HttpContext的,如果直接调用HttpContext,你会发现这个对象总是空的。 下面是一个解决方法可以在Controller里取得当前请求的HttpContext,最好是放在一个基类里这样所有的controller都可以继承。

  • [C#]把一个流的所有字节复制到另一个流

    这篇博文主要记录在C#里把一个流(Stream)里的所有字节复制到另外一个流的几种方法。 DotNet 4.5里可以用inStream.CopyToAsync(outStream) DotNet 4.0里可以用inStream.CopyToAsync(outStream) Dotnet 3.5或者更低版本,只能自己写CopyStream方法

  • [C#]判断当前进程/线程是否运行在管理员身份下

    C#里判断当前进程/线程是否运行在管理员身份下 WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); bool isRunningElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);

  • FirstOrDefault和SingleOrDefault区别

    最近开始使用LINQ,总是不经意就遇到Sequence contains more than one element异常,归根到底是对FirstOrDefault方法和SingleOrDefault方法理解错误了。这里重新总结一下。

  • Entity Framework Validation failed for one or more entities的解决方法

    在使用EneityFramework的SaveChanges(),如果赋值的类型不对,或者没有满足Entity的属性条件,EntityFramework会抛Validation failed for one or more entities的异常,但是这个异常的详细信息里并不直接指出是哪个字段出错了。 解决方法:把SaveChange()包在一个Try里,捕获DbEntityValidationException,打印EntityValidationErrors