Tag: .net

用于解析JSON对象数组的正则表达式?

我正在尝试将一组JSON对象解析为C#中的字符串数组。 我可以从JSON对象中提取数组,但我无法将数组字符串拆分为单个对象的数组。 我所拥有的是这个测试字符串: string json = “{items:[{id:0,name:\”Lorem Ipsum\”},{id:1,name” + “:\”Lorem Ipsum\”},{id:2,name:\”Lorem Ipsum\”}]}”; 现在我正在使用以下正则表达式将项目拆分为单个对象。 现在,他们是2个独立的正则表达式,直到我用第二个修复问题: Regex arrayFinder = new Regex(@”\{items:\[(?[^\]]*)\]\}” , RegexOptions.ExplicitCapture); Regex arrayParser = new Regex(@”((?\{[^\}]\}),?)+” , RegexOptions.ExplicitCapture); arrayFinder正则表达式按照我期望的方式工作,但由于我不明白的原因, arrayParser正则表达式根本不起作用。 我想要它做的就是将各个项目拆分成自己的字符串,这样我得到一个这样的列表: {id:0,name:”Lorem Ipsum”} {id:1,name:”Lorem Ipsum”} {id:2,name:”Lorem Ipsum”} 此列表是string[]数组还是Group或Match集合无关紧要,但我对如何拆分对象感到困惑。 使用上面声明的arrayParser和json字符串,我尝试过这个代码,我认为这个代码没有运气: string json = “{items:[{id:0,name:\”Lorem Ipsum\”},{id:1,name” + “:\”Lorem Ipsum\”},{id:2,name:\”Lorem Ipsum\”}]}”; Regex arrayFinder = new Regex(@”\{items:\[(?[^\]]*)\]\}” , RegexOptions.ExplicitCapture); […]

C#搜索某些文件夹以外的文件和文件夹

有没有办法使用像这样的 LINQ命令从SearchOption中排除某些目录 string path = “C:\SomeFolder”; var s1 = Directory.GetFiles(path , “*.*”, SearchOption.AllDirectories); var s2 = Directory.GetDirectories(path , “*.*”, SearchOption.AllDirectories); 该路径由Sub1和Sub2文件夹组成,其中包含某些文件。 我需要将它们从目录搜索中排除。 谢谢 这项工作: string[] exceptions = new string[] { “c:\\SomeFolder\\sub1”, “c:\\SomeFolder\\sub2” }; var s1 = Directory.GetFiles(“c:\\x86”, “*.*”, SearchOption.AllDirectories).Where(d => exceptions.All(e => !d.StartsWith(e))); 这有助于例外

ASP.NET MVC 2 – 绑定到抽象模型

如果我有以下强类型视图: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage” %> 位置是抽象类。 我有以下控制器,它通过POST接受强类型模型: [HttpPost] public ActionResult Index(Location model) 我收到一个运行时错误,指出“无法创建抽象类 这当然有道理。 但是 – 我不确定这里最好的解决方案是什么。 我有很多具体的类型(大约8个),这是一个只能编辑抽象类属性的视图。 我试图做的是为所有不同的具体类型创建重载,并以通用方法执行我的逻辑。 [HttpPost] public ActionResult Index(City model) { UpdateLocationModel(model); return View(model); } [HttpPost] public ActionResult Index(State model) { UpdateLocationModel(model); return View(model); } 等等 然后: [NonAction] private void UpdateLocationModel (Location model) { // ..snip – update […]

从.NET 2.0客户端调用Web Api服务

是否可以从.NET 2.0客户端调用Web Api方法? 请参考此处的指南: http : //www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client 这些客户端的一些dll似乎与.NET 2.0不兼容 有没有办法从.NET 2.0客户端调用Web Api方法而不添加任何dll?

使用C#加载内存泄漏的图像

我的应用程序中存在内存泄漏问题,它会加载大量图像。 我对C#很陌生,并认为我的内存泄漏问题已经过去了。 我无法弄清楚问题 – 也许我正在使用一些我无法正确处理的非托管模块? 为了说明我的问题,我简化了导致问题的核心,并将其转移到一个干净的项目中。 请注意,这都是愚蠢的代码,不能反映它来自的原始应用程序。 在测试应用程序中,我有2个按钮,触发两个事件。 按钮1 – 创建:将对象设置为datacontext。 这将通过将对象设置为DataContext来加载图像并使它们保持活动状态: var imgPath = @”C:\some_fixed_path\img.jpg”; DataContext = new SillyImageLoader(imgPath); 按钮2 – 清理:我的理解是,如果我放开持有SillyImageLoader并再次保存图像的引用,那么这将被删除。 我还明确地触发垃圾收集,只是为了在删除引用后立即查看内存量。 DataContext = null; System.GC.Collect(); 测试时我正在加载一个974KB的jpeg图像。 保持30位图表示可以将我的应用程序的内存使用量从大约18MB增加到大约562MB。 好。 但是当我清理时,内存只下降到~292MB。 如果我重复Create + CleanUp,我还剩下另外250MB内存。 所以显然有人仍然持有某种东西。 这是SillyImageLoader代码: namespace MemoryLeakTest { using System; using System.Drawing; using System.Windows; using System.Windows.Interop; using System.Windows.Media.Imaging; public class SillyImageLoader { private […]

在Windows Phone 8中没有使用HttpClient缓存

我已经读过为了在HttpClient使用get和post方法时禁用缓存,我需要使用WebRequestHandler作为我的HttpClient的HttpClientHandler ,并更改其缓存策略。 但是, WebRequestHandler不在System.Net.Http.dll中,而是在System.Net.Http.WebRequest.dll中,因此我尝试将.dll添加到项目中作为参考。 我收到一条错误消息: Microsoft Visual Studio 无法将对更高版本或不兼容程序集的引用添加到项目中。 再次,经过一点点搜索,我得出结论,.dll文件被阻止,因为它是从另一个源下载的。 为了解锁它,我继续在这里尝试解决方案。 但是,它也没有工作,当我尝试添加.dll文件作为参考时,我仍然得到相同的错误。 我想要做的就是使用我的HttpClient禁用缓存,我在这里做错了吗? 我愿意接受任何建议或帮助。 我的系统是Windows 8.1,我正在使用Visual Studio 2013.我正在开发的项目是Windows Phone 8应用程序。 我试图引用的.dll目录是“C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ System.Net.Http.WebRequest.dll”。 先感谢您。

(0 ==变量)或(null == obj):C#中过时的练习?

完全重复: 为什么在C#中经常会看到“null!= variable”而不是“variable!= null”? 我见过高级开发人员使用标题中提到的语法。 是否需要在.NET中指定常量? (与C / C ++世界相反)

如何在WPF中读取base64图像?

我知道如何在WinForms中做到这一点 byte[] binaryData = Convert.FromBase64String(bgImage64); image = Image.FromStream(new MemoryStream(binaryData)); 但我如何在WPF中做同样的事情?

blittable类型的非blittable错误

我有这个结构和这段代码: [StructLayout(LayoutKind.Sequential, Pack = 8)] private class xvid_image_t { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public int[] stride; // [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] // public IntPtr[] plane; } public int decore() { xvid_image_t myStruct = new xvid_image_t(); myStruct.stride = new int[4]; // can be commented out – same result GCHandle.Alloc(myStruct, GCHandleType.Pinned); // … } 当我尝试运行它时,我得到一个ArgumentException : 对象包含非原始或非blittable数据 […]

XmlSerializer – 将不同的元素反序列化为相同元素的集合

我有以下XML部分,我无法更改架构。 NUMBER,REGION,MENTION,FEDERAL是列: 我想将它反序列化为public List Columns {get;set;}属性。 因此元素名称将转到Column.Name。 列类: public class Column { //Name goes from Element Name public string Name {get;set;} [XmlAttribute(“WIDTH”)] public int Width {get;set;} } 是否可以使用XmlSerializer类?