Tag: .net

XmlDocument.Validate不会因多个错误而触发

我正在尝试针对现有的XmlSchemaSetvalidation传入的输入xmlDocument。 以下是代码: public class ValidateSchemas { private bool _isValid = true; public List errorList = new List(); public bool ValidateDocument(XmlDocument businessDocument) { XmlSchemaSet schemaSet = SchemaLoader.Loader(); bool isValid = Validate(businessDocument, SchemaLoader._schemaSet); return isValid; } public bool Validate(XmlDocument document, XmlSchemaSet schema) { ValidationEventHandler eventHandler = new ValidationEventHandler(HandleValidationError); document.Schemas = schema; document.Validate(eventHandler); return _isValid; } private void […]

在可变类型中实现IEquatable

我有一个代表外部物理测量设备的课程。 简化版本如下所示: public class Device { public string Tag { get; set; } public int Address { get; set; } } Tag是用于识别设备的用户定义值。 Address是适配器用于与设备通信的值。 如果两个Device实例具有相同的Address ,则将使用相同的外部测量设备。 我想通过重写Equals并实现IEquatable来模仿代码中的行为(使用Contains和Distinct等方法): public class Device : IEquatable { public string Tag { get; set; } public int Address { get; set; } public override bool Equals(object obj) { return Equals(obj as […]

如何反序列化xml字符串

我试图反序列化一个xml字符串,我没有反序列化对象。 我的xml字符串看起来像 123445 78945 [Serializable()] [XmlRoot(“Cars”)] public class Cars { [XmlArrayItem(“Car”,typeof(Car))] public Car[] Car { get; set; } } [Serializable()] public class Car { [XmlElement(“Id”)] public long Id { get; set; } [XmlArrayItem(“BMW”,typeof(BMW))] public BMW[] BMW { get; set; } } [Serializable()] public class BMW { [XmlElement(“Id”)] public long Id { get; set; } } […]

为什么在使用“注释选择”注释多行选择时,Visual Studio会采用单行注释?

关于Visual Studio中的“ 注释选择”选项( Ctrl + K , Ctrl + C ),我总是想知道一些小问题。 当我评论此方法的实现时,使用单行注释格式。 private void Foo() { //Bar b = new Bar(); } 当我在这里评论来自构造函数的参数(部分行)时,使用分隔的注释格式。 private void Foo(Qux q) { Bar b = new Bar(/*q*/); } 在评论整个方法时会产生以下结果: //private void Foo() //{ // Bar b = new Bar(); //} 我觉得在最后一种情况下,分隔的评论格式会更合适,因为规范说: 单行注释扩展到源代码行的末尾。 定界注释可能跨越多行。 有人知道为什么在Visual Studio中注释多行选择时这被选为默认格式?

之前没有访问的访问冲突

我是P /调用Graphviz ,如下所示 。 当我写这篇博客文章时,代码工作正常。 现在,我正在整理一个使用该代码渲染Graphviz图形的HttpModule ,但是我在agmemread得到了一个AccessViolationException 。 // Native signature Agraph_t agmemread(char *); // P/Invoke Signature [DllImport(LIB_GRAPH)] private static extern IntPtr agmemread(string data); // Usage IntPtr g = agmemread(data); 就像我说的,这之前完美无缺。 但现在,我无法让我的代码适用于任何事情。 甚至我基于相同代码的旧Graphviz应用程序也不再适用。 我可能有什么改变会导致这种情况? 我甚至没有下载新版本的Graphviz或任何东西,所以DLL都是一样的。 编辑:我尝试将string更改为StringBuilder ,但这产生了相同的结果。 然后,我添加了一个MarshalAs属性: static extern IntPtr agmemread([MarshalAs(UnmanagedType.LPWStr)] string data); 有了它,我不再获得AccessViolationException ,但Graphviz无法正确读取字符串并返回空指针。

确定是从两个角度顺时针或逆时针转动

我在XNA制作游戏。 我有敌人和球员。 敌人应该逐渐转向玩家。 他们应该确定是否需要顺时针或逆时针转动,以较短者为准。 我通过使用Atan2得到了敌人当前面对的角度和它应该面对的角度(敌人和玩家之间的线的角度)作为弧度。 我虽然得到了一些奇怪的行为。 让我们在下面的场景中说。 敌人可能会朝错误的方向转过来。 我的代码(下面)不断变长,我仍然遇到问题。 此代码是敌人类Update方法的一部分。 这必须是游戏中要克服的常见问题。 有没有办法解决这个问题? //this bit is just in case enemy has rotated more than 360 degrees (gets set back to 0) if (Math.Abs(_blocklist[0]._floor.Revolutions) >= 2) { _blocklist[0]._floor.Rotation = 0.0f; } //enemy rotation in radians float blockroat = _blocklist[0]._floor.Rotation; // vector to player – vector to enemy […]

如何将数组(通过引用,在VB6中)传递给C \ C ++ * .dll子例程?

我需要将一个空的变量数组传递给用C编写的DLL(并且在所有Windows版本上都可用),并且C代码(我无法控制并且无法编辑)将填充变量空数组及其一些返回值值。 基本上,当我尝试这个时 – 当它应该包含函数/子调用的结果时,ByRef数组总是空的(如果我在.NET中执行完全相同的操作,它可以工作)。 我想我需要做一个自定义声明,所以VB知道如何调用C函数,或者? 以下是C子/函数的声明方式。 鉴于此,我需要做些什么才能确保C能够正确使用我的空数组并且我可以获得我的结果? HRESULT InvokeAction( [in] BSTR bstrActionName, [in] VARIANT varInActionArgs, [in, out] VARIANT *pvarOutActionArgs, [in, out] VARIANT *pvarRetVal ); 有关此function的更多信息: http : //msdn.microsoft.com/en-us/library/aa382237(VS.85).aspx 谢谢

尝试使用顶部未选中的项目对ListView进行排序,然后按ID:compare例程抛出一个奇怪的exception

我正在构建一个桌面待办事项列表应用程序,在我的UI中,我有一个ListView控件,列出了每个列表中的所有项目。 每个项目/行都有一个复选框,用于在选中或取消选中时更新数据库中该项目的状态。 到现在为止还挺好! 我试图做的是每当单击一个复选框时重新排序列表,以便列表总是按顶部未选中的项目排序,然后按ID(这是存储在每个的Tag属性中的int值)排序加载列表时的ListViewItem )。 我编写了一个实现IComparer的自定义比较器,并在ItemChecked事件处理程序的ListView上调用Sort() : /// /// Complete or uncomplete a todo item when it’s checked/unchecked /// /// /// private void _taskList_ItemChecked(object sender, ItemCheckedEventArgs e) { var list = sender as ListView; var itemId = e.Item.Tag.ToString(); if(e.Item.Tag != null) { if(e.Item.Checked) // Do some database stuff here to mark as complete else // […]

从csproj引用ASP.NET xproj

我正在使用Visual Studio中新的“类库(NuGet包)”模板之一,我想为它创建一个xUnit测试库。 问题是,当我创建一个新的.csproj库并尝试引用.xproj包时,Visual Studio说”The reference to XXXX could not be resolved.” 为什么会发生这种情况,我该怎么做才能解决这个问题?

System.IO.FileNotFoundException:找不到网络路径。 在Windows 7上使用DirectoryEntry对象时出现exception

我正在尝试使用DirectoryEntry对象连接到远程Windows 7计算机。 这是我的代码 DirectoryEntry obDirEntry = new DirectoryEntry(“WinNT://hostName”, “hostName\\testUser”, “password123”, AuthenticationTypes.Secure); try { if (obDirEntry.Properties.Count > 0) { //ok } } catch (Exception excp) {} 如果我能够连接到远程Windows Server 2003机器或本地Windows 7机器,那么我没有得到任何错误。 但是,当我尝试连接到远程Windows 7机器时,我在线路上获得exceptionif (obDirEntry.Properties.Count > 0) Exception :System.IO.FileNotFoundException: The network path was not found. at System.DirectoryServices.Interop.UnsafeNativeMethods.IAds.GetInfo() at System.DirectoryServices.DirectoryEntry.RefreshCache() at System.DirectoryServices.DirectoryEntry.FillCache(String propertyName) at System.DirectoryServices.PropertyCollection.get_Count() 我能够ping远程窗口7 m / c。 […]