Tag: 运行时

说服C#编译器在成员返回后执行将停止

我不认为这是目前可行的,或者它是否是一个好主意,但这是我刚才想到的。 我使用MSTest对我的C#项目进行unit testing。 在我的一个测试中,我执行以下操作: MyClass instance; try { instance = getValue(); } catch (MyException ex) { Assert.Fail(“Caught MyException”); } instance.doStuff(); // Use of unassigned local variable ‘instance’ 为了使这段代码编译,我必须在其声明或catch块中为instance赋值。 我可以选择在Assert.Fail之后return ,但这仍然是一种解决方法,而不是编译器只知道在此之后执行无法继续。 Assert.Fail永远不会,据我所知,允许执行继续它,因此instance永远不会没有值。 那为什么我必须给它赋值? 如果我将Assert.Fail更改为类似throw ex ,则代码编译正常,我假设因为它知道exception将禁止执行进入instance将未初始化使用的点。 相反,如果我不希望测试失败,而是标记为不确定,该怎么办? 我可以做一个Assert.Inconclusive而不是Fail ,如果编译器知道之后执行不会继续,那就太好了。 那么运行时与编译时知识的情况是否允许执行在哪里进行? C#是否有理由说某个成员(在这种情况下是Assert.Fail在返回后永远不允许执行? 也许这可能是方法属性的forms。 这会对编译器有用还是不必要的复杂性? 外部unit testing 由于人们[有效]指出这是编写unit testing的愚蠢方式,因此请考虑我在unit testing领域之外的问题: MyClass instance; if (badThings) { someMethodThatWillNeverReturn(); } else […]

调试时静态变量初始化程序的运行时评估中的奇数

当我从Visual Studio内部启动它时,我的应用程序正常运行,附带调试器(F5)。 但是当我在没有附加调试器(Ctrl-F5或启动.exe文件)的情况下启动应用程序时,我总是得到一个StackOverflowException ,幸运地记录在Windows事件日志中。 有问题的代码如下: namespace Caliburn.Micro.Contrib { public static class FrameworkExtensions { public static class ViewLocator { static readonly Func<string,object, IEnumerable> _baseTransformName = Micro.ViewLocator.TransformName; public static void EnableContextFallback() { Caliburn.Micro.ViewLocator.TransformName = FallbackNameTransform; } static IEnumerable FallbackNameTransform(string typeName, object context) { var names = _baseTransformName(typeName, context); if (context != null) { names = names.Union(_baseTransformName(typeName, null)); […]

有人可以向我解释汇编类的function吗?

我想在运行时加载和创建程序集,有人告诉我使用命名空间System.Reflection.Assembly和System.Reflection.Emit。 我在msdn上找到的只有参考资料,但是当你不知道在哪里以及如何开始时,它不适合使用它。 我已经谷歌搜索,但我没有找到任何有用的教程/样本/参考。 有人可以向我解释function或给我一些示例/教程吗?

每按一次按钮添加行datagridview

我在usercontrol上有一个datagridview。 我创建了一个数据表,并将datagrid的源设置为此数据表。 我希望,在运行时,能够在每次按钮点击时添加gridview上我想要的行数。 我的代码: private DataTable CreateTable() { Datatable table=new Datatable(); table.Columns.Add(“Name”.ToString()); table.Columns.Add(“Size”.ToString()); DataRow dr = table.NewRow(); dr[“Name”] = “Mike”; DataRow dr2 = table.NewRow(); dr2[“Name”] = “Ryan; DataRow dr3 = table.NewRow(); dr3[“Name”] = “Taylor”; dr[“Size”] = ” one”; dr2[“Size”] = “two”; table.Rows.Add(dr); table.Rows.Add(dr2); table.Rows.Add(dr3); return table; //and on my constructor I set gridview.DataSource=Datatable; } //Code […]

以编程方式设置水晶报告列的fontstyle?

如何以编程方式更改(设置)水晶报表列的字体(不想在设计时使用’格式编辑器’)? 什么是用于访问水晶报告详细信息部分的字段(列)的语法..? 提前致谢 。

如何在.NET中检测运行时类的存在?

是否有可能在.NET应用程序(C#)中有条件地检测是否在运行时定义了类? 示例实现 – 假设您要基于配置选项创建类对象?

在运行时创建标签

使用此代码,我可以在运行时创建标签: ArrayList CustomLabel = new ArrayList(); foreach (string ValutaCustomScelta in Properties.Settings.Default.ValuteCustom) { CustomLabel.Add(new Label()); (CustomLabel[CustomLabel.Count – 1] as Label).Location = new System.Drawing.Point(317, 119 + CustomLabel.Count*26); (CustomLabel[CustomLabel.Count – 1] as Label).Parent = tabPage2; (CustomLabel[CustomLabel.Count – 1] as Label).Name = “label” + ValutaCustomScelta; (CustomLabel[CustomLabel.Count – 1] as Label).Text = ValutaCustomScelta; (CustomLabel[CustomLabel.Count – 1] as Label).Size = new […]

拖动多个选定的控件

我在WinForms Form上有一个UserControl ,可以动态创建多个实例。 如果我选择它,我可以拖动它。 现在,我想,如果我选择多个UserControls(使用ctrl +按钮单击),可以同时拖动所有这些。 我能像我为一个UserControl那样做吗? 我到现在为止尝试过的事情: // For dragging I use this method and also I have // overridden MouseUp,MouseDown,MouseMove from .net public void StartDrag() { dragging = true; Point p = PointToClient(Cursor.Position); dragStart = new Point(Math.Max(0, pX), Math.Max(0, pY)); buttondrag.Capture = true; } private void Usercontrol1_SelectedChanged(object sender, EventArgs e) { if (((UserControl)sender).Selected) […]

使用字符串动态创建(LLBLGen)Linq查询

我们需要生成在编码(设计时)期间100%未知的LINQ查询。 这是因为我们的框架中提供了逻辑,它与任何数据项目完全分开。 对于数据,我们使用LLBLGen生成的数据访问代码。 通常通过使用我们指定给框架(而不是引用)的DLL上的调用,我们可以创建代码来检索数据。 但是现在我们需要通过linq做到这一点。 我们怎么能创建一个像这样的查询: var q = from customer in m.Customer select new { customer.Number, customer.City, customer.CountryEntity.Name }; 仅来自字符串。 我们将有一个名为“customer”的字符串,因此我们知道必须从Customer检索。 然后我们会有一个包含我们想要检索的字段名的字符串[]。 如您所见,这些列可能包含复杂类型(相关字段)。 任何建议,特别是与LLBLGen结合使用,都会很棒! 谢谢,加布

如何以编程方式设置或清除32BIT标志?

编译时,我总是为任何CPU设置它。 但是,有些客户没有64位版本的必需二进制文件,即使在x64系统上运行也是如此。 在这些情况下,我要求他们使用corflags.exe / 32BIT +选项修改我的二进制文件: http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx 如果64位版本不存在,我想在安装时自己修改二进制文件。 我不想自己调用corflags.exe,因为这意味着我需要重新分发应用程序,这是我们的运输要求中不允许的。 所以我的问题是; 有没有办法以编程方式自己修改这个标志,或者直接修改二进制文件(它只是在文件本身的某处设置一个字节)?