为Enums提供本地化的最佳方式是什么?

我正在编写一个使用很多枚举的多语言应用程序,我希望实现以下目标: 将枚举名称显示为本地化字符串 使用属性提供本地化描述 启用语言敏感的枚举解析回int值 我热衷于使用属性+资源文件来修饰枚举,以便可以从运行时类型信息中访问本地化字符串。 在使用静态成员而不是枚举声明静态类之前,我一直沿着这条路走下去,但这解决了很多问题。 某种类型的基于TypeDescriptor的机制是否合适? 甚至可能吗? 此外 – 如何以干净,通用,可重复使用的方式实现目标#3? 自从提出这个问题以来,我已经完成了需要可本地化的枚举显示的开源库。 我选择了实现TypeConverters的技术。 完整资料来源于http://measures.codeplex.com/

使用Selenium Webdriver处理Windows身份validation

在C#中基于Selenium Webdriver的测试必须使用Windows身份validation登录。 我尝试了几种方法: _Driver.SwitchTo().Alert(); _Driver.FindElement(By.Id(“UserName”)).SendKeys(“LynnTest”); _Driver.FindElement(By.Id(“Password”)).SendKeys(“Welcome1!”); _Driver.SwitchTo().Alert().Accept(); _Driver.SwitchTo().DefaultContent(); 和 IAlert alert = _Driver.SwitchTo().Alert(); alert.SendKeys(“LynnTest\\t”); alert.SendKeys(“Welcome1!”); _Driver.SwitchTo().Alert().Accept(); _Driver.SwitchTo().DefaultContent(); 两者都没有成功。 我没有在我的本地系统上获得Windows身份validation对话框,因此我无法查看源以确定如何使用Selenium By方法查找用户名和密码。 我相信浏览器提供了Windows身份validation对话框,但我没有找到该对话框的任何来源。 使用Selenium(不是AutoIt或其他类似工具)如何将用户名和密码传递到Windows身份validation对话框? 解决方案必须基于Selenium代码,而不是加载项,我无法访问云中的浏览器。 注意:在URL中传递用户名和密码不起作用,因为我理解,因为对话框不是由页面上的html生成的。

使用.NET和Xamarin的服务器客户端应用程序

我在互联网上搜索了很多个小时但我发现任何与我的情况相符的东西。 我只是想用TCP或UDP实现一个服务器/客户端应用程序,其中我的Android App(Xamarin)充当服务器,我的.NET应用程序充当客户端。 由于我没有太多的应用程序开发经验和没有Xamarin的经验,我一直在寻找一个例子。 我发现的只有: http://www.codeproject.com/Articles/340714/Android-How-to-communicate-with-NET-application-vi 首先,这是相反的方式(服务器在.NET和客户端作为应用程序),另外它是用于Android Studio所以我很难将这些东西翻译成Xamarin而没有错误。 请有人帮忙,并举例说明如何实现我的问题? 谢谢!

事件源vs原始源

我正在阅读C#WPF书籍,在路由事件章节中,事件有2个相同的属性Source和OriginalSource 。 我没有看到它们之间的区别: XAML: 代码背后: private void Ok_Click(object sender, RoutedEventArgs e) { bool flag = false; var source = e.Source; var originalSource = e.OriginalSource; if (source == originalSource) { flag = true; } } 和flag属性在这里是true ,有人可以解释为什么2相同的属性或在这种情况下这个属性没有效果? 或者我们在哪里可以看到这个属性的用例?

读/写音频/video文件的元数据

我需要一些帮助来读/写音频/ vido文件的元数据信息。 我搜索了很多,但没有找到任何有用的东西。 Taglib sharp是一个开源库,提供读/写元数据的帮助。 使用标签lib我可以编辑一些值但不是全部。 TagLib.File videoFile = TagLib.File.Create(“test.mp4”); videoFile.Tag.Title = “Test”; videoFile.Tag.Comment = “Nothing”; 但我无法编辑以下属性,如作者url,生产者等。我如何编辑这些属性?

在asp.net中创建Excel工作簿

我需要在点击按钮时为用户生成一个excel文件。 我之前使用的是Netoffice ,它在桌面应用程序中运行良好。 但现在我想用asp.net应用程序做同样的事情。 这样我的服务器代码就无法访问客户端的excel副本。 我应该采取什么方法?

任务取消和TaskContinuationOptions

昨天我刚刚介绍了Tasks(TPL),所以我尝试做一些示例项目,以便了解如何使用它们。 我的示例项目设置了一个开始按钮,开始递增进度条。 第二个按钮取消任务。 用于报告何时调用使用TaskContinuationOptions.OnlyOnRanToCompletion的延续的文本框,以及用于报告何时调用使用TaskContinuationOptions.OnlyOnCanceled的继续的文本框。 我可以创建并执行一个Task,但是以一种让TaskContinuationOptions.OnlyOnCanceled标志继续触发的方式取消它是一个问题。 我按如下方式创建任务: private void StartTask() { CancellationTokenSource tokenSource = new CancellationTokenSource(); CancellationToken token = tokenSource.Token; Task task = null; task = Task.Factory.StartNew(() => DoWork(tokenSource), tokenSource.Token); //A list so that I can cancel the task when clicking a button on the UI Thread. MyTasks.Add(tokenSource); Task completed = task.ContinueWith(result => TaskCompleted(), TaskContinuationOptions.OnlyOnRanToCompletion); Task […]

摇动画(3D版)

我想在错误上使用这个动画,如下所示: 如何在wpf中实现这一点? 我觉得这应该是多个转换的组合(组合?),但是哪些以及如何确切? 这是一个启动器(mcve或称之为“我的尝试”),这是丑陋的,甚至不是我想要的: 周围有许多2d摇动帖( 点击 , 点击 ),但是我需要动画说“你错了”而不是说“让我跳舞”的动画。

AllowHtml不起作用

我正在构建一个内容管理系统,允许我以外的人更新网站上的内容。 我有一个面向前面的HTML表单,通过AJAX将数据发送到控制器: // CONTROLLER [ValidateInput(false)] public void CarAJAX() { CarAdmin CA = new CarAdmin(); CA.UpdateCar(System.Web.HttpContext.Current.Request); } 这些数据将包含HTML,因此我的模型中出现错误: // MODEL using System; using System.Web; using System.Web.Mvc; namespace Site.Models { public class CarAdmin { public String id { get; set; } [AllowHtml] public String HTML_Stuff { get; set; } public CarAdmin(){} public void UpdateCar(HttpRequest Request) { HTML_Stuff […]

C#BinaryWriter长度前缀 – UTF7编码

我有一个项目使用内存映射文件让两个应用程序相互共享数据。 生产者应用程序是用C#编写的,消费者应用程序用简单的旧C语言编写。两者都使用VS2010。 MSDN称“BinaryWriter.Write Method(String)”在数据前面加上UTF-7编码的无符号整数,然后写入有效负载。 这正是我被困住的地方。 如果我写了一个长度为256个字符的字符串,那么C app的调试器会向我显示这个字节序列:0x80 0x2 。 将长度前缀转换为我可以在消费者应用中安全使用的最佳方法是什么? 制片人应用: using System; using System.IO; using System.IO.MemoryMappedFiles; using System.Threading; using System.Text; using System.Linq; class Program { static void Main(string[] args) { using (MemoryMappedFile mmf_read = MemoryMappedFile.CreateNew(“mappedview”, 4096)) { using (MemoryMappedViewStream stream = mmf_read.CreateViewStream()) { string str; BinaryWriter writer = new BinaryWriter(stream); str = string.Join(“”, Enumerable.Repeat(“x”, […]