是否可以使用ido-mode完成来查找TAGS文件中的定义?我怀疑ido-completed-read是答案的一部分.这是我的非工作代码,它显示了一个未填充的ido模式迷你缓冲区:
(defun ido-choose-from-tags ()
"Use ido to select tags "
(interactive)
(etags-tags-apropos
(ido-completing-read "Tags: " nil t)))
Run Code Online (Sandbox Code Playgroud) 我使用Windows批处理文件使用emacsclientw.exe在已经运行的Emacs实例中打开文件.但是,以这种方式打开的任何文件都是在服务器模式下打开的,这意味着我必须使用Cx#来杀死它,而不是通常的Cx k.我该如何改变这种行为?
我经常必须处理包含命名空间元素但不声明命名空间的XML文档。例如:
<root>
<a:element/>
</root>
Run Code Online (Sandbox Code Playgroud)
因为从未为前缀“ a”分配名称空间URI,所以文档无效。当我使用以下代码加载这样的XML文档时:
using (StreamReader reader = new StreamReader(new FileStream(inputFileName,
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) {
doc = XDocument.Load(reader, LoadOptions.PreserveWhitespace);
}
Run Code Online (Sandbox Code Playgroud)
它抛出一个异常(正确地),指出该文档包含未声明的名称空间且格式不正确。
因此,我可以预定义默认的名称空间前缀->名称空间URI对,以使解析器可以使用吗?XMLNamespaceManager看起来很有前途,但是不知道如何将其应用于这种情况(或者如果可以的话)。
当我将XML文档从磁盘加载到XDocument时,该XDocument具有一个仅包含原始XML文档在磁盘上的位置的就绪属性BaseUri.换一种说法,
XDocument doc = XDocument.Load(@"c:\temp\doc.xml");
Console.Out.WriteLine(doc.BaseUri);
// Outputs "file:///c:/temp/doc.xml"
Run Code Online (Sandbox Code Playgroud)
如果我从头开始创建一个新的XDocument,它没有BaseUri.例如:
XDocument doc = new XDocument(new XElement("test"));
Console.Out.WriteLine(doc.BaseUri);
// Outputs nothing
Run Code Online (Sandbox Code Playgroud)
我可以将这个新的XDocument分配给BaseUri吗?我希望能够生成新文档,为它们分配名称,并轻松地将这些名称与它们一起传递.
我编写了一个扩展XmlUrlResolver的类来解析XML文档中对公共标识符的引用.例如,当XML文档以以下内容开头时:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE chapter PUBLIC "-//Custom//EN" "custom.dtd">
Run Code Online (Sandbox Code Playgroud)
公共标识符" - // Custom/EN"将传递给relativeURI我的override ResolveUri()方法的参数,并解析为磁盘上的实际DTD位置.这工作正常.
当DTD本身内存在实体引用时,会出现此问题.例如:
<!ENTITY % tablemodel
PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
"soextblx.dtd">
Run Code Online (Sandbox Code Playgroud)
在这种情况下,系统标识符"soextblx.dtd"被传递给ResolveUri()公共标识符" - // OASIS // DTD XML Exchange Table Model 19990315 // EN".
有没有办法实现这个目标?覆盖GetEntity()似乎也不起作用,因为它也传递了系统标识符.
这个问题(LINQ and a natural sort order\xe2\x80\xa6)讨论如何使用 IComparer 在 Linq 中实现自然排序。我过去曾成功地将其与 IEnumerables 一起使用,但我无法使其在 Linq-to-SQL 表达式中工作。这是因为 Linq-to-SQL 不支持采用 IComparer 的 .OrderBy() 的特定重载吗?
\n\n如果确实如此,是否有任何实际的解决方法?
\n我正在使用VaryByCustom每个浏览器和每个用户创建一个输出缓存:
[OutputCache(Duration = 6000, VaryByParam = "*", VaryByCustom="browser;userName")]
Run Code Online (Sandbox Code Playgroud)
(我已经覆盖GetVaryByCustomString()了这项工作.)
我需要能够删除单个用户的输出缓存,如果可能的话,不会使不同用户的输出缓存失效.我已经读过HttpResponse.RemoveOutputCacheItem(),但这可以通过删除基于路径的输出缓存来实现.有没有办法根据VaryByCustom字符串执行此操作?
我有一个C#应用程序,它使用SendMessage pinvoke方法向应用程序外的各个窗口发送"关闭窗口"消息(WM_CLOSE/16).这很有效,除非有问题的窗口是Windows资源管理器窗口.我没有异常,但窗口没有关闭.
这是签名:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
internal static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
Run Code Online (Sandbox Code Playgroud)
我需要将不同的消息发送到Windows资源管理器窗口吗?或者另一种方法来实现这一目标?
我是C#的新手,对使用命名空间的最佳实践感到好奇.
我有一个包含单个类库项目的解决方案,以及几个小型控制台应用程序项目.所有控制台应用程序项目都是解析命令行参数,并在库项目中调用不同的类.库项目使用标准的CompanyName.Tool约定.
我的问题是,既然给定控制台应用程序的唯一目的是库项目中的一个类,并且永远不会从另一个项目或类调用它,我是否需要将它放在命名空间中?这似乎没必要.
给定这个 XML:
<element>Circles & boxes</element>
Run Code Online (Sandbox Code Playgroud)
我想要做的是将元素的字符串值存储为字符串,并将所有字符引用和实体解析为其等效的 unicode 字符。因此,对于这个元素,我想要“圆圈和盒子”。
当我这样做时(文本是代表文本节点的 XText 对象):
string textvalue = text.ToString(SaveOptions.DisableFormatting);
Run Code Online (Sandbox Code Playgroud)
我得到“圆圈和方框”,这不是我想要的。
这可能吗?
我正在使用WPF创建一个选项对话框,列出可能的键,以便用户可以分配程序的热键.我试图将System.Windows.Forms.Keys枚举的所有可能值过滤到AZ和F1-F12,然后将该列表绑定到ComboBox.
到目前为止,这是我的代码:
Regex filter = new Regex("(^[A-Z]$)|(^F[0-9]{1,2}$)");
IEnumerable<Key> keyList = from x in (IEnumerable<Key>)Enum.GetValues(typeof(Keys))
where filter.Match(x.ToString()).Success
select x;
keys.DataContext = keyList;
Run Code Online (Sandbox Code Playgroud)
执行此操作后,keyList包含字母"A"两次,并且缺少字母"P"到"U".我不知道为什么.
如果有更好的方法,我也对替代方法感兴趣.
c# ×9
linq ×4
xml ×4
.net ×2
emacs ×2
linq-to-xml ×2
asp.net-mvc ×1
caching ×1
dtd ×1
linq-to-sql ×1
namespaces ×1
pinvoke ×1
tags ×1
validation ×1
wpf ×1