Tag: .net

将float.MaxValue转换为Long抛出exception?

试图获取float.MaxValue的整数部分,但它抛出错误? long l = Convert.ToInt64(float.MaxValue); Console.WriteLine(l); 错误:算术运算导致溢出。

NHibernate 3.2 By Code(Conformist)ClassMapping For Dictionary Property

假设我有一个“SomeClass”类,它有一个查找字典:DataDictionary; 我目前在SomeClass.hbm.xml中有一个映射,如下所示: 我想使用NHibernate的新版本(版本3.2)按代码映射。 我如何映射上面的字典属性? 目前我有: public class SomeClassMap :ClassMap { public SomeClassMap() { Id(x => x.ID, mapping => mapping.Generator(Generators.Guid)); Map(x = x.DictionaryProperty, mapping => { mapping.Key(k => k.Column(“SomeClassID”)); mapping.Table(“SomeClassData”); }); } } 大多数情况下,我不知道如何指定索引的等价物和字典映射的元素。

处理存储在公共静态字段中的IDisposable对象

如果一个类有一个实现IDisposable的实例字段,那么包含的类实现了IDisposable和类,它从Dispose方法中调用Dispose方法。 public class A : IDisposable { public System.Drawing.Font font = new Font(“Arial”, 10.0f); public void Dispose() { font.Dispose() } } (我知道我没有正确处理配置模式,但是样本代码应该足够好) 如果该字段是静态字段,那么调用字段的Dispose应该在哪里? public class B { public static System.Drawing.Font font = new Font(“Arial”, 10.0f); } 我可以使B类实现IDisposable并调用font.Dispose但如果稍后再使用B.font会导致问题。 除了你必须记住访问静态方法的dispise,你需要创建一个实例来调用Dispose。 我也可以创建一个静态Dispose方法,但是用户必须记住调用Dispose并且必须确保它们是程序中它的最后一个用户。

如何使用DataContractSerializer创建具有与我的已知类型匹配的标记名称的xml

我有以下数据合同: [CollectionDataContract(Name=”MyStuff”)] public class MyStuff : Collection {} [DataContract(Name = “Type1”)] [KnownType(typeof(Type1))] public class Type1 { [DataMember(Name = “memberId”)] public int Id { get; set; } } [DataContract(Name = “Type2”)] [KnownType(typeof(Type2))] public class Type2 { [DataMember(Name = “memberId”)] public int Id { get; set; } } 我将其序列化为xml如下: MyStuff pm = new MyStuff(); Type1 t1 = […]

全局引用命名空间?

有没有办法在整个解决方案中全局引用命名空间? 所以不要在每个代码文件中都有这些行: using System; using MyNamespace; 必须只声明一次,每个代码文件都会使用它们。 顺便说一下,我使用的是Visual Studio。

silverlight mpeg-4

我目前正在开展一个项目,我需要创建一个网络video播放器。 在当前状态下,我的应用程序播放客户端提供的录像作为动态JPEG和H264 / AVC。 问题是,他还想要MPEG-4第2部分(Visual),我称之为mp4v。 根据这个页面,支持mp4v,但我无法获得任何样本与Silverlight一起使用。 即使Silverlight不支持此编码,我是否可以让我的应用程序显示此录制而不转换它们? 有没有办法让这个工作? 任何建议将不胜感激。

在表单中找到焦点控件(在.netCF中)

我有一个表格,我想知道哪个控件有焦点。 我怎样才能做到这一点? 我见过的最佳解决方案让我迭代屏幕上的所有控件。 虽然可行,但只是知道哪个控件具有焦点似乎很多工作。

CodeDomProvider.CompileAssemblyFromSource – 找不到Roslyn(csc.exe)

我们最近从旧的CodeDomProvider升级到名为Microsoft.CodeDom.Providers.DotNetCompilerPlatform的新Roslyn CodeDomProvider。 它工作正常,但它在错误的地方寻找csc.exe。 NuGet包将exe放在路径中: [App Path] \ bin \ Debug \ roslyn 但是,当我们编译时,我们得到这个错误: 无法找到路径'[App Path] \ bin \ Debug \ bin \ roslyn \ csc.exe’的一部分。 请注意,它正在寻找错误位置的exe。 它正在bin \ Debug文件夹中的“bin”文件夹中查找它。 因此,为了使我们的代码编译,我们需要将Roslyn编译器移动到:[App Path] \ bin \ Debug \ bin \ roslyn \ csc.exe 有没有办法告诉CodeDomProvider Roslyn编译器所在的位置? 这不仅仅是Roslyn编译器代码中的一个直接错误吗?

System.Windows.Forms.TrackBar内存使用具有较大的最大值

我有一个包含System.Windows.Forms.TrackBar的控件。 我将其最大值设置为~200,000,000。 当我这样做时,控件需要800MB的内存。 将最大值减少到2,000,000使用了更合理的内存量。 //trackBar.Maximum = 210554060; // uses ~800MB of memory trackBar.Maximum = 1000000; // uses a small amount of memory 这是Windows控件中的错误吗? 或者我是否要求轨道栏做一些不合理的事情? 更新:我已经创建了一个新的Windows窗体项目,除了表单上的轨迹栏之外什么都没有。 我将最大值设置为200,000,000。 我设置了TickFrequency并进行了更改,以便没有数百万的滴答和更改步骤。 当我这样做时,该应用程序使用超过800MB的内存。 我正在使用.NET Framework 4。 800MB内存”> 。 更新我发现了这个问题的一些解释: http : //www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms.controls/2006-12/msg00015.html 添加测试项目的链接 https://www.dropbox.com/s/nh6jsymw05feoqn/testingTrackbar.zip?m

.net 32​​位最大字节数组大小是否<2gb?

我一直在寻找一些与字节数组的最大大小相关的SO问题( 这里和这里 ),并且已经使用了一些数组并获得了一些我不太了解的结果。 我的代码如下: byte[] myByteArr; byte[] myByteArr2 = new byte[671084476]; for (int i = 1; i < 2; i++) { myByteArr = new byte[671084476]; } 这将编译并在执行时将在myByteArr的初始化时抛出’System.OutOfMemoryException’ 。 如果我将for循环中的2更改为1或者我注释掉其中一个初始化( myByteArr2或myByteArr )它将正常运行。 另外, byte[] myByteArr = new byte[Int32.MaxValue – 56]; 抛出同样的exception。 为什么在编译为32位时会发生这种情况? 它们不在2gb范围内吗?