来自C#的DirectX

我正在研究在C#中使用DirectX的各种选项; 理想情况下,我想使用微软首选的任何技术。 非Microsoft技术: SharpDX 超薄DX Direct2D Manager Wrapper 微软技术: WPF 用于托管代码的DirectX 9.0(不建议使用) XNA Framework(已弃用) 我想要使​​用的技术背后的基本原理: 我想要一个代码优先的框架(而不是在WPF中编写XAML) 我希望(理想情况下)Microsoft支持的框架不被弃用 我想构建不过度依赖第三方依赖的应用程序(即如果我要使用WPF构建应用程序,该框架可能已经作为.NET框架的一部分安装在用户计算机上) 问题: 什么是Microsoft首选的编写DirectX exabled应用程序的方法(除了WPF)? 使用弃用技术(MDX,XNA)有哪些危险? 什么是可以在C#中使用的最流行的非Microsoft DirectX技术?

获取SortedDictionary中的最后一个元素

我看到了这个问题 。 如何在.Net 3.5中获取SortedDictionary中的最后一个元素。

log4net AdoNetAppender – SqlParameterCollection不包含参数

在我的一个项目中,我收到此错误: System.IndexOutOfRangeException: SqlParameterCollection does not contain SqlParameter with ParameterName “@log_date”. в System.Data.SqlClient.SqlParameterCollection.GetParameter(String parameterName) в System.Data.Common.DbParameterCollection.System.Data.IDataParameterCollection.get_Item(String parameterName) в log4net.Appender.AdoNetAppenderParameter.FormatValue(IDbCommand command, LoggingEvent loggingEvent) в log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) в log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events) 这是appender配置(在其他项目中完美运行): . . . 如果有人遇到这个问题,我真的很感激你的帮助

MVVM:瘦ViewModels和Rich Models

我将继续努力克服MVVM模式,并且在尝试为小型/中型项目创建实用设计时,遇到了许多挑战。 其中一个挑战是弄清楚如何在不创建大量重复,难以维护的代码的情况下获得与此模式解耦的好处。 我目前的策略是创建“丰富”的模型类。 他们充分意识到它们将被MVVM模式消耗并实现INotifyPropertyChanged,允许观察它们的集合并且仍然认识到它们可能总是被观察。 我的ViewModel类往往很薄,只在实际需要转换数据时公开属性,其大部分代码是RelayCommand处理程序。 视图可以直接绑定到ViewModel或Models,具体取决于是否需要进行任何数据转换。 我使用AOP(通过Postsharp)来缓解INotifyPropertyChanged的痛苦,这样就可以很容易地以这种方式使我的所有Model类“丰富”。 使用这种方法有明显的缺点吗? 我可以假设ViewModel和View是如此紧密耦合,如果我需要View的新数据转换,我可以根据需要将其添加到ViewModel中吗?

SQLBulkCopy或批量插入

我有大约6500个文件,总和大约17 GB的数据,这是我第一次移动我称之为大量数据的东西。 数据位于网络驱动器上,但各个文件相对较小(最大7 MB)。 我正在用C#编写程序,如果我使用BULK INSERT而不是SQLBulkCopy,我想知道是否会注意到性能上的显着差异。 服务器上的表也有一个额外的列,所以如果我使用BULK INSERT,我将不得不使用格式文件,然后为每一行运行UPDATE。 我是新来的论坛,所以如果有更好的方式来问这个问题,请随意提及。

.NET事件特殊方法(添加/删除/提升/其他)

我想知道EventInfo.GetRaiseMethod和EventInfo.GetOtherMethods方法。 显然,CLR支持4种与事件相关的方法:添加,删除,提升和“其他”。 但是在C#中创建的事件只有添加和删除 …我假设在VB中使用了raise ,因为你必须在声明自定义事件时指定一个RaiseEvent方法,但显然情况并非如此: GetRaiseMethod总是返回null。 那么,有谁知道: 如果一个事件从未被使用过,那么有一个与事件相关联的加法方法有什么意义呢? 是否有使用此方法引发事件的特定MSIL指令? (我在操作码中找不到类似的东西) GetOtherMethods返回的“其他”方法是什么(好吧,实际上没有返回)? 他们应该做什么? BCL中有哪些类型可以实现这些特殊方法?

从另一个项目中删除一个项目数组的最快方法是什么?

我有两个字符串数组: string[] all = new string[]{“a”, “b”, “c”, “d”} string[] taken = new string[]{“a”, “b”} 我想用c和d生成一个新的字符串数组。 在没有手动循环和创建新列表的情况下, .net 3.5任何快速方法都能做到这一点吗?

Cookie总是过期的

我正在设置一个cookie: HttpCookie cookie = new HttpCookie(“simpleorder”); cookie.Expires = DateTime.Now.AddYears(1); cookie[“order”] = carModel.ToString(); cookie[“price”] = price.ToString(); Response.Cookies.Add(cookie); 但是当我几秒钟检查它时它已经过期,并且到期日期设置为{01-01-0001 00:00:00}。 我尝试通过检索代码 HttpCookie cookie = Request.Cookies[“simpleorder”]; if (cookie != null && cookie.Expires > DateTime.Now)… 我不清楚任何地方的cookie,所以我不知道它为什么会过期?

WPF包URI中的逗号

WPF包URI使用三个连续的逗号,例如: pack://application:,,,/myFolder/myPic.bmp 这个,,,部分是什么意思? 它只是一个分界符吗? 逗号之间可以有任何内容吗?

在InstalledLocation StorageFolder中尝试CreateFileAsync时拒绝访问?

我在InstalledLocation StorageFolder中尝试CreateFileAsync时拒绝Access StorageFolder storageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; StorageFile file = await storageFolder.CreateFileAsync(“fileNmae”, Windows.Storage.CreationCollisionOption.ReplaceExisting); 我也试过了 var storageFolder = await StorageFolder.GetFolderFromPathAsync(“ms-appx:///”); 得到“价值不在预期的范围内” 我可以在Windows.Storage.ApplicationData.Current.LocalFolder CreateFileAsync ,然后将CopyAsync到InstalledLocation StorageFolder? StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder; StorageFile file = await storageFolder.CreateFileAsync(“fileName”, Windows.Storage.CreationCollisionOption.ReplaceExisting); StorageFolder installedLocationFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; var result = await file.CopyAsync(installedLocationFolder, “fileName”, Windows.Storage.NameCollisionOption.ReplaceExisting); 但InstalledLocation StorageFolder中的CreateFileAsync拒绝访问? 是因为安全原因还是我在这里编码错了?