小编cos*_*sta的帖子

HtmlAgilityPack:有人可以解释一下将HtmlDocument OptionAutoCloseOnEnd设置为true的确切效果是什么?

目前的文件说:

定义是否必须在结束时或直接在文档中关闭非闭合节点.将此设置为true实际上可以更改浏览器呈现页面的方式.默认值为false.

对不起,我不得不承认我不明白这一段.具体"到底"是什么?"文档中"的含义究竟是什么意思?在最后一个之前的短语听起来不祥.如果该选项设置为true并且html格式正确,这仍然会影响文档吗?

我查看了源代码,但我不明白发生了什么 - 代码对该属性的反应没有设置为true.请参阅HtmlNode.cs,并搜索OptionAutoCloseOnEnd - 第1707行.我还在第1113行和第1154行的HtmlWeb.cs中找到了一些时髦的代码.太糟糕了,源代码浏览器不显示行号,而是在页面中搜索OptionAutoCloseOnEnd.

您能否举例说明这个选项的作用?

我正在使用HtmlAgilityPack来修复一些糟糕的HTML并将页面内容导出到xml.

我遇到了一些格式错误的html - 重叠标签.这是片段:

<p>Blah bah
<P><STRONG>Some Text</STRONG><STRONG></p>
<UL>
<LI></STRONG>Item 1.</LI>
<LI>Item 2</LI>
<LI>Item 3</LI></UL>
Run Code Online (Sandbox Code Playgroud)

请注意,第一个p标记未关闭,请注意重叠的STRONG标记.

如果我设置OptionAutoCloseOnEnd,这将得到某种程度的修复.我试图了解在文档结构中将此属性设置为true的确切效果是什么.

这是我正在使用的C#代码:

HtmlDocument doc = new HtmlDocument();
doc.OptionOutputAsXml = true;
doc.OptionFixNestedTags = true;      
//  doc.OptionAutoCloseOnEnd = true;    
doc.LoadHtml(htmlText);
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# html-agility-pack

6
推荐指数
1
解决办法
677
查看次数

ThreadLocal性能与使用参数

我目前正在为公式语言实现运行时(即函数集合).有些公式需要传递给它们的上下文,我创建了一个名为EvaluationContext的类,它包含我在运行时需要访问的所有属性.

使用ThreadLocal<EvaluationContext>似乎是一个很好的选择,使这个上下文可用于运行时函数.另一种选择是将上下文作为参数传递给需要它的函数.

我更喜欢使用ThreadLocal,但我想知道是否存在任何性能损失,而不是通过方法参数传递评估上下文.

.net c# multithreading thread-local

5
推荐指数
1
解决办法
2341
查看次数

为什么在Oracle中接受字符串值之前的加号(+)?

好吧,这可能是Oracle解析器的一个怪癖.

以下查询有效.注意最后一行的'Y'前面的+.

SELECT *
  FROM (SELECT 'Y' AS field FROM DUAL
        UNION ALL
        SELECT 'X' AS field FROM DUAL) t
 WHERE t.field = +'Y'
Run Code Online (Sandbox Code Playgroud)

为什么Oracle解析器接受这个?我认为这是因为旧的外连接语法,但在该语法中,+用括号括起来.

这也有效:

select +'Y1' from dual;
Run Code Online (Sandbox Code Playgroud)

还有这个:

select 'A' || + 'Y1' from dual;
Run Code Online (Sandbox Code Playgroud)

这有效(oracle将字符串转换为数字):

select -'1' from DUAL;
Run Code Online (Sandbox Code Playgroud)

但不是这个([错误]执行(223:9):ORA-01722:无效的数字):

select -'A' from DUAL;
Run Code Online (Sandbox Code Playgroud)

我想知道为什么在varchar2值之前可以使用+.该算术运算符节没有提到将适用于字符串值的具体规则.

oracle oracle12c

5
推荐指数
1
解决办法
258
查看次数

用作内存数据集的TClientDataSet - 是否可以在不将数据保存到数据库的情况下在内存中应用更新?

默认情况下,TClientDataSet会跟踪DataSet中所做的所有更改(插入,更新,删除).有没有办法告诉数据集接受当前的更改(在使用插入/发布的一系列插入之后,让我们说)而不实际调用数据库来保存任何东西?

我想到的一个想法是使用TDataSetProvider并实现BeforeUpdateRecord事件并将Applied参数设置为true.我不喜欢这件事.我必须再添加两个对象(TDataSetProvider和TSQLQuery对象),ApplyUpdates启动一个事务.有更简单的方法吗?

如果我没有在TClientDataSet上设置ProviderName,则ApplyUpdates失败.

谢谢

delphi tclientdataset dbexpress

4
推荐指数
1
解决办法
1037
查看次数

是否有一个java lambda表达式相当于C#linq let?

是否有java 8 lambda表达式等同于let设置?例如,如何使用Java 8 lambda表达式编写这个c#linq表达式?

String[] lines = new String[]{"Porky.Pig", "Darth.Vader", "Donald.Duck", "George Lucas"};
(from l in lines      
 let p = l.IndexOf('.')
 where p >= 0
 select new
 {
     FirstName = l.Substring(0, p),
     LastName = l.Substring(p + 1)
 }).Dump();
Run Code Online (Sandbox Code Playgroud)

我想只评估一次l.IndexOf('.').我想出的最接近的是:

 String[] lines = new String[]{"Porky.Pig", "Darth.Vader", "Donald.Duck", "George Lucas"};
 Arrays.stream(lines)
       .filter(x -> x.indexOf('.') > 0)
       .map(x -> {
           int p = x.indexOf('.');
           return new Person (x.substring(0, p), x.substring( p + 1));
       });
Run Code Online (Sandbox Code Playgroud)

哪里:

public class Person {
    public Person(String firstName, …
Run Code Online (Sandbox Code Playgroud)

c# java linq lambda java-8

4
推荐指数
1
解决办法
3029
查看次数

可定义值和值之间的运算符定义在哪里(相等,大于等)?

如果我有这个代码(我在Linqpad中运行它):

decimal? x = null;
(x < 1).Dump();
Run Code Online (Sandbox Code Playgroud)

在可空的十进制和十进制之间定义了LessThan运算符?

它不是十进制的?它不在十进制类中.

我基本上想要创建调用运算符的linq表达式.

或者这个代码是由编译器在运行时创建的,即它使用默认的十进制运算符然后添加一些额外的语句来检查可空值是否实际具有值?

c#

4
推荐指数
1
解决办法
46
查看次数

如何使用 Visual Studio 2015 为网站项目配置不同的虚拟目录

我有在 VS 2012 中开发的 c# 网站类型项目。我想使用 VS 2015,但无法指定与默认根目录 / 不同的虚拟目录。

在 vs 2012 中,sln 文件中有以下几行:

VWDPort = "59903"
VWDDynamicPort = "true"
VWDVirtualPath = "/myapp"
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,即当应用程序在浏览器中启动时,它会转到:http://localhost:59903/myapp

我在 VS 2015 中打开解决方案,VS 创建了一个隐藏的 .vs 文件夹,将 applicationionhost.config 文件放在 .vs\config 文件夹下。

这是它为网站项目创建的条目:

<site name="My Web Application" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\costa\Documents\webapps\My Web Application" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:59903:localhost" />
    </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

我尝试使用应用程序和 virtualDirectory 元素的路径设置,但没有任何效果。

如果我设置应用程序元素的路径,则不会加载网站项目。如果我保持原样并将 virtualDirectory 的路径设置为 /myapp,我会收到 HTTP 错误 500.0 - 内部服务器错误,模块:AspNetAppInitializationFailureModule,处理程序:PageHandlerFactory-Integrated-4.0 或 ExtensionlessUrlHandler-Integrated-4.0,具体取决于我的 url尝试访问。

如果我将路径设置为“/”,则一切正常。

让我困惑的是,当我在解决方案资源管理器中选择网站项目时,属性窗口中的 SSL URL …

asp.net iis-express asp.net-web-api visual-studio-2015

4
推荐指数
1
解决办法
9483
查看次数

scala 中是否有相当于 c# nameof 的东西?

在 C# 中,我可以编写如下代码(我在 Linqpad 5 上运行):

void Main()
{
    new Test { Property1 = 100 }.Dump();
    Console.WriteLine(nameof(Test.Property1));
}

class Test
{
    public int Property1 { get; set; }
    override public String ToString()
    {
        return $"{nameof(Property1)}={Property1}";
    }
}
Run Code Online (Sandbox Code Playgroud)

scala 有没有相当于 nameof 的东西?

谢谢

c# scala

4
推荐指数
1
解决办法
1222
查看次数

为什么编译器拒绝带有“E2026 Constant expression expected”的常量默认参数值?

以下代码无法编译,并显示 [dcc32 Error] TestDefaultParameterValuePrj.dpr(13):E2026 预期常量表达式:

program TestDefaultParameterValuePrj;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

const
  SomeValue: char = 'T';

  function Test(p1: String; p2: char = SomeValue): String;
  begin
    Result := p2;
  end;

begin
  try
    Writeln(Test('Blah Blah'));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

基于这个线程,如果我真的想使用常量,我可以使用重载函数。但是,我很惊讶编译器不接受它。

delphi

3
推荐指数
1
解决办法
876
查看次数

F#中的EF C#ToListAsync等效于什么?

我在C#中有以下代码:

public async Task<List<Table>> GetRows()
{
  return await db.Table.ToListAsync();
}  
Run Code Online (Sandbox Code Playgroud)

其中db是EF 6 DbContext。

假设我访问相同的DbContext,如何在F#中编写等效内容?

我想出了这段代码,但我陷入了困境:

let getRows = async {
   let q = query { 
         from r in db.Table
             select r
         }
   q |> Seq.map(fun row -> ...) // <-- Here I might want to do some custom function
}
Run Code Online (Sandbox Code Playgroud)

谢谢

f# c#-to-f# entity-framework-6

2
推荐指数
1
解决办法
84
查看次数

调试 Web 应用程序并通过使用 ExtJs 的页面上的文件 html 输入选择文件时,带有 VS 2022 的 IIS Express 崩溃

详细信息如下:

  • 操作系统:通过 RD 访问的 Windows 2016 服务器
  • 开发工具:VS 2022 17.1.6 和 VS 2019 16.11.11。我在管理模式下运行 VS(两者)
  • IIS Express 版本:10.0.22489.1000,64 位
  • Chrome 浏览器:100.0.4896.127(官方版本)(64 位)
  • App:.net 4 webforms应用程序,使用ExtJs 6.6.0 classic作为前端
  • 防病毒软件:CrowdStrike,版本 6.36.15005.0。

我有一个带有文件字段的表单。此链接提供了有关上传工作原理的更多信息,它基本上在幕后使用 iframe。

现在,在 VS 2019 中可以上传了。在 VS 2022 中,上传不再起作用,并返回错误:“阻止了来源为“http://localhost:38991”的框架访问跨源框架。” (错误在客户端 JavaScript 代码中返回)。需要明确的是,我在 VS 2019 中打开完全相同的项目并且它可以工作,然后我在 VS 2022 中打开该项目并且上传不再工作。

两者都使用相同的 IIS Express 进程(64 位)。还有一个小细节,从 VS 2022 运行时的上传操作会杀死 IIS Express,它基本上消失了。

知道如何在 VS 2022 中解决这个问题吗?目前,我必须使用 VS 2019 才能测试上传。

提前致谢。

更新:我安装了 VS 2022 版本 17.1.6。

最初我以为 IIS Express 在上传文件后就消失了。当我在“打开”对话框中选择文件时,它实际上退出。

The program …

iis-express extjs6-classic visual-studio-2019 visual-studio-2022

2
推荐指数
1
解决办法
2927
查看次数