财产隐藏和反思(C#)

在派生类中声明与基类中的属性名称匹配的属性“隐藏”它(除非它使用override关键字覆盖它)。 如果类型不匹配,则Type.GetProperties()将返回基类和派生类属性。 但是,如果它们的类型匹配,则只会返回派生类的属性。 例如: class A { protected double p; public int P { get { return (int)p; } set { p = value; } } } class B : A { public new int P { get { return (int)p; } set { p = value; } } } class C : B { […]

C#跨线程通信

在C#.NET中,我编写了以下简单的后台工作线程: public class MyBackgrounder { public delegate void dlgAlert(); public dlgAlert Alert; public event EventHandler eventAlert; Thread trd; public void Start() { if (trd == null || trd.ThreadState == ThreadState.Aborted) { trd = new Thread(new ThreadStart(Do)); } trd.IsBackground = true; trd.Priority = ThreadPriority.BelowNormal; trd.Start(); } void Do() { Thread.Sleep(3000); Done(); } void Done() { if […]

如何通过在父类上实现IDataErrorInfo来validation子对象

我正在使用MVVM架构开发WPF应用程序。 我是WPF的业余爱好者所以请耐心等待.. 我有两个模型类。 父类具有另一个(子)类的对象作为其属性。 (我的意思是嵌套对象而不是inheritance对象) 例如,请考虑以下方案。 public class Company { public string CompanyName {get; set;} public Employee EmployeeObj {get; set;} } public class Employee { public string FirstName {get; set;} public string LastName {get; set;} } 我想使用Enterprise Library Validation BlockvalidationEmployee实体的属性。 我可以通过在employee类中实现IDataErroInfo接口来实现,如下所示 public class Employee : IDataErrorInfo { [NotNullValidator(MessageTemplate=”First Name is mandatory”] public string FirstName {get; […]

如果引发任何exception,如何在Task.WhenAll上取消并引发exception?

我正在使用Task.WhenAll等待倍数任务。 当其中一个生成exception时,我希望Task.WhenAll(或任何其他等待多个任务的方式)立即取消其他任务并引发exception。 可能吗? 提前致谢

在代码中有效地表达2×2逻辑网格

在事件处理程序中,我正在响应值的更改。 我可以访问旧值和新值,并希望根据更改的内容执行某些操作。 每个不同的结果将执行动作/函数X,Y或Z的某种组合.Z接受介于-1和1之间的参数。执行这些操作的顺序并不重要。 查看以下逻辑网格。 旧值是最左边的标签列,新值是标签的第一行: New: 0 !=0 ——– ——- Old: 0 | nothing Y, Z(1) !=0 | X, Z(-1) X, Y — Z(0) is okay but not required for this quadrant 什么是代表这个的好方法? 我在C#工作,但会接受任何语言的答案,因为它不是一个真正的语言问题 – 我可以翻译任何东西。 例: if (oldvalue == 0 && newvalue == 0) return; if (oldvalue != 0) X(); if (newvalue != 0) […]

动态更改Winforms ComboBox中的项目文本

我有一个Winforms ComboBox ,其中包含自定义类的实例。 当项目首次添加到ComboBox的Items集合时,将对每个项目调用ToString方法。 但是,当用户更改运行应用程序的语言时, ToString方法的结果会更改。 因此,如何让ComboBox再次调用所有项目上的ToString方法,而无需从ComboBox删除所有项目并将其重新添加?

C#Regex中的贪婪,非贪婪,全贪婪匹配

如何在以下示例中获取所有匹配项: // Only “abcd” is matched MatchCollection greedyMatches = Regex.Matches(“abcd”, @”ab.*”); // Only “ab” is matched MatchCollection lazyMatches = Regex.Matches(“abcd”, @”ab.*?”); // How can I get all matches: “ab”, “abc”, “abcd” PS:我希望以通用方式获得所有比赛。 上面的例子只是一个例子。

如何在C#中获取注册表写入权限

我正在尝试写入HKEY_CURRENT_USER \ Software \ appname的Windows注册表,但是当我尝试写入密钥时,我一直收到权限错误,我已将以下内容添加到我的程序集中: [assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, Write = @”HKEY_CURRENT_USER\\Software”)] 但这还没有解决问题,我还应该做些什么吗?

使用comboboxValueMember和DisplayMember

我有一个excel文件,它有两列(1. Name和2. Value),我想绑定到ComboBox。 当我将DisplayMember设置为name时,它会显示Excel文件中Name列的所有值。 我想在asp.net控件中获得一个类似的下拉列表,其中包含文本字段和值字段,这样当我选择文本字段时,可以使用后台代码获取值字段。 我怎么能在ComboBox(WinForms)中做? 我正在使用以下代码。 String strConn = “Provider=Microsoft.jet.OLEDB.4.0;” + “Data Source=”C:\vipin.xls”+ “Extended Properties=Excel 8.0;”; DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter(“SELECT [name] FROM [Sheet1$] where Component=1 “, strConn); da.Fill(ds); dataGridView1.DataSource = ds.Tables[0].DefaultView; comboBox1.DataSource = ds.Tables[0].DefaultView; comboBox1.DisplayMember = “name”;

发布到IIS 7.5时,ASP.NET Core 404错误

我正在使用Visual Studio 2015将我的ASP.NET核心应用程序发布到IIS 7.5。 我要做的就是在我的wwwroot中查看正常的default.htm页面。 当我使用VS的IIS Express时,一切正常,但是当我发布到IIS 7.5并指向Visual Studio在发布时创建的wwwroot文件夹的物理路径时,我只得到一个空白屏幕(404)。 有什么奇怪的是当我从startup.cs的Configure方法中运行默认的app.run方法时,它完美地工作: app.Run(async (context) => { await context.Response.WriteAsync(“Hello World!”); }); 但是,当我评论出来时,使用app.UseDefaultFiles()和app.UseStaticFiles(),我什么都没得到。 这是我的Startup.cs文件: public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 public void […]