将未扩展的数组传递给VB6的Ubound函数将导致错误,因此我想在检查其上限之前检查它是否已被标注尺寸.我该怎么做呢?
是否可以从事件中取消订阅匿名方法?
如果我订阅这样的事件:
void MyMethod()
{
Console.WriteLine("I did it!");
}
MyEvent += MyMethod;
Run Code Online (Sandbox Code Playgroud)
我可以这样取消订阅:
MyEvent -= MyMethod;
Run Code Online (Sandbox Code Playgroud)
但是如果我使用匿名方法订阅:
MyEvent += delegate(){Console.WriteLine("I did it!");};
Run Code Online (Sandbox Code Playgroud)
是否有可能取消订阅这种匿名方法?如果是这样,怎么样?
我正在寻找一个XPath库来查询FF,IE,Opera和Safari中的XML文档......但是找不到它.你看过了吗?
Mono .NET是否支持并编译C++/CLI?
如果没有,你知道他们是否有任何支持它的计划?
我有一个项目,我正在采取一些特别丑陋的"实时"HTML,并使用HTML Agility Pack将其强制转换为正式的XML DOM.我希望能够做的是用Linq对XML进行查询,以便我可以清除我需要的位.我正在使用此处描述的方法将HtmlDocument解析为XDocument,但在尝试查询时我不知道如何处理命名空间.在一个特定的文档中,原始HTML实际上是格式不正确的XHTML,带有以下标记:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
Run Code Online (Sandbox Code Playgroud)
当试图从这个文档中查询时,似乎命名空间属性阻止我做类似的事情:
var x = xDoc.Descendants("div");
// returns null
Run Code Online (Sandbox Code Playgroud)
显然,对于那些"div"标签,只有LocalName是"div",但正确的标签名称是名称空间加上"div".我试图对XML命名空间的问题进行一些研究,似乎我可以通过这种方式来绕过命名空间:
var x =
(from x in xDoc.Descendants()
where x.Name.LocalName == "div"
select x);
// works
Run Code Online (Sandbox Code Playgroud)
但是,这似乎是一个相当hacky的解决方案,并没有正确解决名称空间问题.据我所知,一个正确的XML文档可以包含多个名称空间,因此处理它的正确方法应该是解析我正在查询的名称空间.还有其他人不得不这样做吗?我只是想让它变得复杂吗?我知道我可以通过坚持使用HtmlDocument并使用XPath查询来避免所有这些,但如果可能的话,我宁愿坚持我所知道的(Linq),我也更愿意知道我没有为更进一步的命名空间做好准备 - 相关问题在路上.
在这种情况下处理命名空间的正确方法是什么?
当将文本设置为属性时,如何为文本添加换行符,即:
<TextBlock Text="Stuff on line1 \n Stuff on line2" />
Run Code Online (Sandbox Code Playgroud)
将其分解为爆炸格式不适合我的特定情况.我需要的是模仿以下内容的一些方法:
<TextBlock>
<TextBlock.Text>
Stuff on line1 <LineBreak/>
Stuff on line2
</TextBlock.Text>
<TextBlock/>
Run Code Online (Sandbox Code Playgroud) 假设我有一个java程序,它使用HTTP 1.1在服务器上发出HTTP请求,并且不关闭连接.我发出一个请求,并读取从绑定到套接字的输入流返回的所有数据.但是,在发出第二个请求时,我没有得到服务器的响应(或者流有问题 - 它不再提供任何输入).如果我按顺序发出请求(请求,请求,读取)它工作正常,但(请求,读取,请求,读取)不会.
有人可以了解为什么会发生这种情况吗?(代码片段如下).无论我做什么,第二个读取循环的isr_reader.read()只返回-1.
try{
connection = new Socket("SomeServer", port);
con_out = connection.getOutputStream();
con_in = connection.getInputStream();
PrintWriter out_writer = new PrintWriter(con_out, false);
out_writer.print("GET http://somesite HTTP/1.1\r\n");
out_writer.print("Host: thehost\r\n");
//out_writer.print("Content-Length: 0\r\n");
out_writer.print("\r\n");
out_writer.flush();
// If we were not interpreting this data as a character stream, we might need to adjust byte ordering here.
InputStreamReader isr_reader = new InputStreamReader(con_in);
char[] streamBuf = new char[8192];
int amountRead;
StringBuilder receivedData = new StringBuilder();
while((amountRead = isr_reader.read(streamBuf)) > 0){
receivedData.append(streamBuf, 0, amountRead);
}
// Response …Run Code Online (Sandbox Code Playgroud) 使用asp:Repeater生成表行:
<asp:repeater ID="announcementsRepeater" OnItemDataBound="announcementsRepeater_ItemDataBound" runat="Server">
<itemtemplate>
<tr id="announcementRow" class="announcementItem" runat="server">...</tr>
</itemtemplate>
</asp:repeater>
Run Code Online (Sandbox Code Playgroud)
现在在数据绑定中我想用不同的css类标记"未读"的公告,这样网络人就可以执行他想要区分读取和未读公告的任何样式:
protected void announcementsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
return;
// get the associated data item
Announcement announcement = (Announcement)e.Item.DataItem;
WebControl row = (WebControl)e.Item.FindControl("announcementRow");
if (row != null)
row.CssClass = row.CssClass + " announcementItemUnread";
}
Run Code Online (Sandbox Code Playgroud)
除了演员在运行时失败:
System.InvalidCastException occurred
Message="Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlTableRow' to type 'System.Web.UI.WebControls.WebControl'."
Run Code Online (Sandbox Code Playgroud)
事实证明,HtmlTableRow有一个不同的父母heirarchy比WebControl:
HtmlTableRow
: HtmlContainerControl
: HtmlControl
: System.Web.UI.Control
Run Code Online (Sandbox Code Playgroud)
这最终是WebControl的来源 …
默认情况下,可可进度条略显胖,我想要一些更小的东西,比如在Finder复制对话框中看到的进度条.但是,Interface Builder将NSProgressIndicator控制高度锁定为20像素,并且我的程序化尝试缩小功能无法正常工作,因为调用
[progressBar setControlSize:NSMiniControlSize];
Run Code Online (Sandbox Code Playgroud)
和
[progressBar setControlSize:NSSmallControlSize];
Run Code Online (Sandbox Code Playgroud)
在awakeFromNib什么都不做,并且NSProgressIndicatorThickness在头文件中看到的暗示看起来似乎没有插入我能看到的任何方法.
有什么诀窍?
我有一个批处理文件,使用这个习惯用法(很多次)将注册表值读入环境变量:
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName') DO SET MyVariable=%%B
Run Code Online (Sandbox Code Playgroud)
(后面有一个制表符delims=)
这在数千个客户的计算机上运行良好.但是在一个客户的计算机上(运行Windows Server 2003,启用了命令扩展),
它失败了,因为它'REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName'未被识别为内部或外部命令,可操作程序或批处理文件.reg query单独运行" "命令工作正常.Reg.exe存在于C:\Windows\System32.
通过将代码更改为,我能够解决问题
REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName > temp.txt
FOR /F "tokens=2* delims= " %%A IN (temp.txt) DO SET MyVariable=%%B
Run Code Online (Sandbox Code Playgroud)
这让客户启动并运行,但我想了解问题发生的原因,以便将来可以避免.
稍微偏离主要主题 - 将注册表值(字符串或DWORD)添加到环境变量中的更直接方法也很有用.