Tag: .net

.NET Core 1.0中的System.Environment

有谁知道如何在.NET Core中获取有关当前环境和平台的信息? 目前Core库中没有Environment类。

C#中的只读列表

我有一些带有List -property的类: class Foo { private List myList; } 我想提供对此字段的访问权限仅供读取。 即我希望属性可以访问Enumerable,Count等,而无需访问Clear,Add,Remove等。我怎么能这样做?

将Func转换为委托

我定义了以下委托: public delegate object MyDelegate(dynamic target); 我有一个Func对象: Func myFunc 如何将myFunc转换为MyDelegate ? 我试过这些说明,但都没有奏效: MyDelegate myDeleg = myFunc; MyDelegate myDeleg = (MyDelegate) myFunc; MyDelegate myDeleg = myFunc as MyDelegate;

从具有尾随垃圾的字符串中解析整数

我需要解析出现在字符串开头的十进制整数。 十进制数后面可能有尾随垃圾。 这需要被忽略(即使它包含其他数字。) 例如 “1” => 1 ” 42 ” => 42 ” 3 -.X.-” => 3 ” 2 3 4 5″ => 2 .NET框架中是否有内置方法来执行此操作? int.TryParse()不合适。 它允许尾随空格但不允许其他尾随字符。 实现它很容易,但如果它存在,我宁愿使用标准方法。

不使用对话框调用自定义IInternetSecurityManager

你好,谢谢你的期待。 问题描述: 我已经实现了嵌入浏览器控件的ac#WinForm应用程序,并实现了IInternetSecurityManager来执行我们需要的任务,以允许在iframe中使用我们本地安装的网页进行跨域访问。 使用IInternetSecurityManager,IOleClientSite,IDocHostShowUI和IDocHostUIHandler,所有事情都按预期工作。 换句话说,我们所有的实现都被浏览器控件调用。 问题是当浏览器控件中加载的网页具有调用window.showModalDialog()的脚本时:正在使用的浏览器控件实例不再与我们的客户端站点通信。 绝对没有QueryInterface调用或在上面提到的任何接口中调用任何其他方法。 对话框中的文档没有使用我假设的安全管理器实现,因为IE显示的对话框中的Web浏览器控件与我们称为SetClientSite()的对象不同。 题: 我们如何与这个新的浏览器控件交谈? 我们需要能够在IE(我们的IInternetSecurityManager实现)所显示的对话框中提供浏览器控件。 但是,我们永远不会有机会告诉它关于我们的客户网站,可以这么说。 换句话说,没有来自IE的通信通过一个界面告诉我们,“我是一个由IE创建的新浏览器控件,这里是我的IUnknown界面。这是你设置我的客户端站点等的机会” 如果IE收到这样的通知我们会很好。 结果是正在使用两个不同的安全上下文,并且我们的应用程序在使用iframe的对话框中失败,因为我们的IInternetSecurityManager实现未被使用。 源代码示例: 我已经凿掉了源代码来保护无辜者:)并且减少了我认为你可以在自己的Visual Studio 2010解决方案中使用的东西。 请阅读ReadMe.txt文件,了解有关问题,重复步骤等的信息。 我编写的测试网页显示了指导您完成样本使用的信息和步骤。 如果您对我要完成的工作或样品不够清楚有疑问,请告诉我。 请指教。 谢谢。 http://home.comcast.net/~lowrider2112/bin/TestIEHost.rar

WPF:如何在运行时更改CurrentUICulture

我试图更改我的WPF应用程序在单击事件中使用的语言,但它不会更改。 private void menuItemGerman_Click(object sender, RoutedEventArgs e) { Settings.Default.Culture = “de-DE”; Thread.CurrentThread.CurrentCulture = new CultureInfo(Settings.Default.Culture); Thread.CurrentThread.CurrentUICulture = new CultureInfo(Settings.Default.Culture); } 我错过了什么?

我可以通过哪些方法确保字符串属性具有特定长度?

我已经创建了一些类,用于向我的数据库中的存储过程提供数据。 存储过程中的varchar参数具有长度规范(例如varchar(6) ,我想在将它们传递给存储过程之前validation所有字符串属性的长度。 有一个简单的,声明性的方法来做到这一点? 到目前为止,我有两个概念性想法: 属性 public class MyDataClass { [MaxStringLength = 50] public string CompanyName { get; set; } } 我不确定我需要使用哪些程序集/命名空间来实现这种声明性标记。 我认为这已经存在,但我不确定它在哪里以及它是否是最佳方式。 在属性中validation public class MyDataClass { private string _CompanyName; public string CompanyName { get {return _CompanyName;} set { if (value.Length > 50) throw new InvalidOperationException(); _CompanyName = value; } } } 这似乎是很多工作,并且会让我当前简单的课看起来很丑陋,但我想它会完成工作。 这也需要大量的复制和粘贴才能做到这一点。

允许自定义文件双击并打开我的应用程序,同时加载它的数据

就像在Windows中进行引用一样,要打开.txt文件,它可能会打开NotePad.exe和/或Word.exe,同时将文件中的文本加载到编辑器中。 如何使用我的桌面应用程序执行此操作。 我有一个自定义文件类型,扩展名为.mmi。 我想要它,以便当用户双击此文件类型时,它不仅会打开我的应用程序,而是将其中的数据加载到我的应用程序的相应区域。 我理解如何为我的应用程序设置设置自定义文件类型,但我丢失的地方是如何获取触发打开我的应用程序的文件信息,以便我可以从中获取数据。 例如。 如果我打开.html,并选择使用notepad.exe,则html现在会加载到新打开的文本编辑器中。 这适用于From应用程序,而不是以main为args的控制台应用程序,可以帮助或更改任何内容。 示例如下: public partial class FormDashboard : Form { public FormDashboard() { InitializeComponent(); } private void FormDashboard_Load(object sender, EventArgs e) { //I want to get what file trigger the app to open here, and apply the data accordingly throurght the forms application. }

重命名具有相同名称的目录不同的情况

我试图将c#中的目录重命名为仅与不同情况相同的名称。 例如:f:\ test到f:\ TEST 我试过这段代码: var directory = new DirectoryInfo(“f:\\test”); directory.MoveTo(“f:\\TEST”); 我得到一个IOException – 源和目标路径必须不同。 我也尝试过具有相同结果的Directory.Move()。 这是怎么做到的? 我是否必须创建一个单独的临时目录,将包含的文件从原始目录移动到临时目录,然后删除原始目录,并重命名临时目录?

如何使用PasswordBox作为TextBox?

我有一个PasswordBox ,我甚至需要使用此控件作为TextBox 。 我需要显示普通文本而不是典型的黑点 有没有财产可以做到这一点? 谢谢。