Tag: 运行时

如果在Visual Studio 2008中声明怪异

我遇到一个很奇怪的问题,我记录了我的会话,因为我认为没有人会相信我。 我遇到了一个似乎处于非常基础的错误。 这是一个单线程应用程序,我正在做的就是评估一个布尔值。 布尔值等于false,但if语句正在执行,好像它是真的……排序。 你会明白我的意思。 我已经清理了解决方案并重建了很多次。 不知道发生了什么事。 我想要一些解释。 http://www.youtube.com/watch?v=ope9kxEyt4g

在程序运行期间编译/执行XAML

我想创建一个WPF应用程序,它从数据库中检索XAML代码并显示检索到的代码。 让我们说数据库返回以下代码: 如何在运行时执行此代码(或者可能只是mainGrid的内容)?

HashSet (IEqualityComparer )的查找时间复杂度是多少?

在C#.NET中,我喜欢使用HashSets,因为它们的查找时间复杂度为O(1)。 如果我要查询大量数据,我通常更喜欢将HashSet用于List,因为它具有这种时间复杂性。 令我困惑的是HashSet的构造函数,它将IEqualityComparer作为参数: http://msdn.microsoft.com/en-us/library/bb359100.aspx 在上面的链接中,备注注意到“构造函数是一个O(1)操作”,但如果是这种情况,我很好奇,如果查找仍然是O(1)。 特别是,在我看来,如果我要编写一个Comparer来传递给HashSet的构造函数,每当我执行查找时,必须在每个键上执行Comparer代码以检查是否存在一场比赛。 这不是O(1),而是O(n)。 当元素添加到集合中时,实现是否在内部构建查找表? 总的来说,我如何确定有关.NET数据结构复杂性的信息?

以编程方式将用户控件添加到页面,同时保留已存在的控件

我试图在运行时将用户控件添加到div中。 我可以添加控件no probelem但它会覆盖之前添加的控件。 基本上,我正在尝试将乘客添加到旅行系统中 – 乘客的详细信息在用户控制之下,我事先并不知道会有多少乘客。 我有一个新的乘客按钮,它应该将新用户控件添加到div中,而不会覆盖前一位乘客。 代码是c#/。net 4。 我试图将控制数据保存到viewstate并重新添加新的,但这也不起作用。 这是我正在使用的代码片段 foreach (Control uc in p_passengers.Controls) { Passenger p = uc as Passenger; if (p != null) { p.SaveValues(); } } 但是,p.SaveAs()(只是将控制值写入ViewState)永远不会被命中。 我确定它只是一些愚蠢但有任何想法? 干杯伙计们。

在运行时创建类型“MyClass:OtherClass {}”?

在C#中是否可以在运行时创建一个inheritance自generics类的类型,其中基类的模板参数是正在构造的当前类? 这将编译正常: // I have this class: public class OtherClass where T : OtherClass { } // I want to create this at runtime: public class MyClass : OtherClass { } 但我不知道如何使用System.Reflection.Emit.ModuleBuilder.TypeBuilder创建MyClass : AssemblyName asn = new AssemblyName(“test.dll”); AssemblyBuilder asb = AppDomain.CurrentDomain.DefineDynamicAssembly( asn, AssemblyBuilderAccess.RunAndSave, @”D:\test_assemblies”); ModuleBuilder = modb = asb.DefineDynamicModule(“test”, “test.dll”); TypeBuilder tb = modb.DefineType( […]

如何在运行,加载和使用中编译C#DLL

A)动态编译C#EXE和DLL是相对容易的。 B)执行EXE意味着运行新的应用程序。 加载DLL意味着可以在可以在应用程序或项目之间共享的情况下使用方法和函数。 现在,可以从MSDN或为方便起见,找到编译EXE(或使用温和修改,DLL)的最快最简单的方法: private bool CompileCSharpCode(string script) { lvErrors.Items.Clear(); try { CSharpCodeProvider provider = new CSharpCodeProvider(); // Build the parameters for source compilation. CompilerParameters cp = new CompilerParameters { GenerateInMemory = false, GenerateExecutable = false, // True = EXE, False = DLL IncludeDebugInformation = true, OutputAssembly = “eventHandler.dll”, // Compilation name }; // Add […]

通过使用不同属性类型的reflection设置对象的属性

我使用reflection来填充对象的属性。 这些属性有不同的类型:String,Nullable(double)和Nullable(long)(不知道如何在这里转义尖括号……)。 这些属性的值来自(字符串,对象)对的字典。 因此,例如我的类具有以下属性: string Description { get; set; } Nullable Id { get; set; } Nullable MaxPower { get; set; } (实际上有大约十几个属性),字典将有,,等条目 现在我使用类似以下内容来设置值: foreach (PropertyInfo info in this.GetType().GetProperties()) { if (info.CanRead) { object thisPropertyValue = dictionary[info.Name]; if (thisPropertyValue != null && info.CanWrite) { Type propertyType = info.PropertyType; if (propertyType == typeof(String)) { info.SetValue(this, Convert.ToString(thisPropertyValue), […]

ASP.NET machinekey在代码中设置键

对于IIS托管的ASP.NET MVC 4网站,我想在运行时在代码中动态调整机器密钥。 机器密钥,加密和validation密钥以及要使用的算法都存储在数据库中。 我想在应用程序启动期间注入这些值而不是从web.config文件中读取值,而是让系统使用它们。 有没有办法实现这一点,而不必更改web.config (只更改内存配置)? 我试过访问配置部分,但它被标记为只读并且也是密封的,所以我不能覆盖IsReadOnly() 。 但是,对我来说,有一个setter是一个指示器,可能有一种方法可能删除readonly标志。 var configSection = (MachineKeySection)ConfigurationManager.GetSection(“system.web/machineKey”); if (!configSection.IsReadOnly()) { configSection.ValidationKey = _platformInfo.MachineKey.ValidationKey; configSection.DecryptionKey = _platformInfo.MachineKey.EncryptionKey; … } 有没有办法实现这个目标? 我能看到的唯一选择是使用像AppHarbor这样的自定义方法,但是如果可能的话,我宁愿坚持使用内置方法。 如果有人问为什么我想这样做,原因是,这是针对在webfarm中运行的大量相同网站。 因此,必须具有非自动生成的密钥(每台服务器上必须相同)。 此外,每个网站都应该是隔离的,不应该共享相同的密钥。 由于所有网站的物理表示相同,因此它们共享相同的物理位置。 这就是web.config文件不能包含特定于应用程序的设置的原因。 编辑:至少确认是否根本不可能,这将是非常有帮助的。 如上所述,可以使用自定义validation和加密方法,这些方法将完全避免使用机器密钥设置。 谢谢。

在运行时将属性添加到POCO类

我为我的项目选择了ServiceStack OrmLite ,这是一个纯数据导向的应用程序。 我愿意允许最终用户创建自己的XML格式定义的对象类型,这些格式将用于在运行时使用CodeDOM生成类。 我还将定义应用程序(即User )所需的一些“系统”对象,但我无法预见最终用户将使用的所有属性,因此我正在寻找一种方法来允许扩展我在设计时创建的类。 样品波纹管 public class User { public Guid Uid { get; set; } public String Username { get; set; } public String Password { get; set; } } 最终用户希望拥有Email和Address 。 他应该能够将2个属性添加到上层类,并且整个类将是(OrmLite仍然可以使用它,因为它允许覆盖: public class User { public Guid Uid { get; set; } public String Username { get; set; } public […]

是否可以在运行时切换app.config?

有没有办法在运行时切换应用程序app.config(current.config到new.config,文件为文件)。 我有一个备份/恢复过程,需要替换自己的application.exe.config文件。 我已经看过这篇文章,但它没有回答如何在运行时这样做。