Tag: c#

检查对象是否为字典或列表

使用单声道的.NET 2,我使用的是一个基本的JSON库,它返回嵌套的字符串,对象字典和列表。 我正在编写一个mapper来将它映射到我已经拥有的jsonData类,我需要能够确定object的基础类型是Dictionary还是List。 下面是我用来执行此测试的方法,但是想知道这是否更干净? private static bool IsDictionary(object o) { try { Dictionary dict = (Dictionary)o; return true; } catch { return false; } } private static bool IsList(object o) { try { List list = (List)o; return true; } catch { return false; } } 我正在使用的库是litJson但JsonMapper类本质上不适用于iOS,因此我正在编写自己的映射器。

C#中的不安全代码

在C#中,不安全代码有哪些限制? 例如,我可以像使用C或C ++一样进行几乎任意的指针转换和算术运算吗?

validation电子邮件域是否存在

有人检查电子邮件地址的域名作为其validation步骤的一部分吗? 例如。 如果用户指定blah@gmail.com作为他们的地址,请确认gmail.com存在。 我应该注意,在我的webapp中,现有用户可以将邀请转发给他们的朋友。 我根本不需要validation这些邀请。 相反,我只想警告我的用户是否有拼写错误等可能正在向错误的人发送邀请。 这甚至值得吗?

检查对象是否为空的最佳和最快方法

我经常在源代码中看到if(object.ReferenceEquals(myObject,null))的用法,用于检查myObject是否为null而不是我熟悉的if(myObject == null) 。 是否有任何特殊原因(如速度,可读性等)使用第一种方式而不是第二种方式? 你用哪一个? 先感谢您。

从代码C#更改Web.Config中的URL重写规则

我想修改C#代码中的重写规则。 Url重写规则位于web.config文件中。 我想改变前。 to , 如何找到节点规则并将匹配url更新为“new one”,其中name =“partners”;? 这是我对动态url重写的想法。 感谢您的任何其他方式。

DirectoryInfo,FileInfo和很长的路径

我尝试使用非常长的路径使用DirectoryInfo,FileInfo。 我尝试使用\\?\ c:\ long path(我使用fileInfo和DirectoryInfo获取非法的文件) 我尝试使用file:// c:/ long path(我得到uri不支持) 我可以在路径或其他地方使用〜。 我读过这篇文章,但我想用另一种调用API的方式。 是其他解决方案吗? 微软有一篇文章可供使用\\? 在文件路径链接文本中 问题是我如何使用非常长的路径,DirectoryInfo和FileInfo的路径谁更长的256 char

Windows窗体的MVC WebAPI身份validation

我正在尝试制作一个Windows窗体应用程序,它插入ASP.NET MVC WebAPI公开的某些服务,但是在validation/登录部分遇到了很多麻烦。 我似乎无法找到一个示例,只是演示如何从Windows窗体执行此操作,我发现的一切似乎非常复杂,包括很多非常深的管道,或似乎针对其他ASP.NET网站,而不是Windows窗体。 有什么我想念的吗? 这是不可能的吗? 或者它只是不打算? 我已经看过像.NET WebApi身份validation那样声称要做的事情,但是我没有看到如何使用Windows窗体的角度来构建 cookie。 我也经历了http://blogs.msdn.com/b/webdev/archive/2012/08/26/asp-net-web-api-and-httpclient-samples.aspx并且仍然运气不佳。

如何将DataGridView单元格的字体设为特定颜色?

此代码适用于使单元格的背景为蓝色: DataGridViewRow dgvr = dataGridViewLifeSchedule.Rows[rowToPopulate]; dgvr.Cells[colName].Style.BackColor = Color.Blue; dgvr.Cells[colName].Style.ForeColor = Color.Yellow; …但ForeColor的效果并不是我所期望/希望的:字体颜色仍然是黑色,而不是黄色。 如何将字体颜色设置为黄色?

为什么EF 5.x对表使用复数名称?

我在ORM框架方面有过一些经验,比如Hibernate,甚至是Entity Framework 3.0。 默认情况下,这些框架对表使用单数名称。 例如,类User将映射到表User。 但是当我使用Visual Studio 2012迁移到EF 5.x时,它使用复数名称并导致许多错误,除非我使用TableAttribute手动映射该类: [Table(“User”)] public class User { // … } 没有TableAttribute ,如果我有一个DbContext如下: public CustomContext : DbContext { // … public DbSet Users { get; set; } } 然后打电话: var list = db.Users.ToList(); 生成的sql看起来像: Select [Extent1].[Username] From [Users] as [Extent1] 因此,将发生错误,因为我没有任何名为Users的表。 此外,我将单数forms的名称表格称为复数forms。 你可以在这个链接中看到原因 我想知道为什么微软以这种方式实现EF 5.x而不是EF 3.0? 更新: 我们可以通过在上下文类中使用此代码告诉EF不使用复数名称: protected […]

C#中的Volatile和Thread.MemoryBarrier

为了实现multithreading应用程序的无锁代码 ,我使用了volatile变量, 理论上 : volatile关键字用于确保所有线程都能看到volatile变量的最新值; 因此,如果线程A更新变量值,并且线程B在更新发生之后读取该变量,它将看到最近从线程A写入的最新值。正如我在Nutshell书中的C#4.0中读到的那样,这是不正确的,因为 应用volatile不会阻止写入后读取交换。 可以通过在每次获取volatile变量之前放置Thread.MemoryBarrier()来解决这个问题: private volatile bool _foo = false; private void A() { //… Thread.MemoryBarrier(); if (_foo) { //do somthing } } private void B() { //… _foo = true; //… } 如果这解决了问题; 考虑我们有一个while循环,它依赖于其中一个条件的值; 在while循环之前放置Thread.MemoryBarrier()是解决问题的正确方法吗? 例: private void A() { Thread.MemoryBarrier(); while (_someOtherConditions && _foo) { // do somthing. } […]