小编Elr*_*ynn的帖子

多部分int字典键的最佳方法?

假设我的字典需要由ItemId和RegionId的组合键入,两者都是int.并且说值侧的类型是"数据".我可以通过以下两种方式做到这一点:

方式1:多级字典,如下所示:

Dictionary<int, Dictionary<int, Data>>  myData;
Run Code Online (Sandbox Code Playgroud)

所以查找可以像这样编码:

Data data1  = myData[itemId][regionId];
Run Code Online (Sandbox Code Playgroud)

不错,但缺点是我需要在第一级检查密钥存在,因此代码更安全

Data data1 = null;
if (myData.ContainsKey(itemId)) data1 =  myData[itemId][regionId];
Run Code Online (Sandbox Code Playgroud)

方式2:使用多部分密钥.在这种方法中,我将创建一个表示部件的结构,并使用结构作为字典键:

private struct MultiPartKey
{
    public int ItemId;
    public int RegionId;
}

Dictionary<MultiPartKey, Data>  myData;
Run Code Online (Sandbox Code Playgroud)

并且查找将是:

MultiPartKey mpk;
mpk.ItemId = itemId;
mpk.RegionId = regionId;
Data data1 = myData[mpk];
Run Code Online (Sandbox Code Playgroud)

这里可能的缺点是它只有在我的struct完全由简单值类型组成时才有效,因此两个实例的按位比较将是相等的.(对?)

你怎么看?

.net c# dictionary key

10
推荐指数
2
解决办法
5717
查看次数

8
推荐指数
1
解决办法
216
查看次数

Visual Studio代码,autopep8不运行

在Windows 10.我这样做:

pip install autopep8
Run Code Online (Sandbox Code Playgroud)

在我有的vscode用户设置中

"python.linting.pep8Enabled": true,
"python.formatting.provider": "autopep8",
Run Code Online (Sandbox Code Playgroud)

当我运行格式文档,或从命令pallette显式调用autopep8时,错误是:

Error: Command failed: autopep8 c:\tca-backend\lambdas\utilities\NetMenuAPIUtil.py
'autopep8' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

显然,vsc想调用autopep8.exe,但没有exe.只是py.所以我创建了一个autopep8.bat,它在我从命令行进行测试时有效,但是当从vsc运行时,它会将批处理文件的内容插入到文档的顶部.(是的,这听起来很奇怪.)

所有其他与Python相关的操作都可以正常工作,包括ESLint扩展.

visual-studio-code vscode-settings

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

不了解在网格中生成复选框的此kendo模板

我不了解Kendo模板的基本知识,所以也许有人可以向我解释一下.网格中单元格的模板示例来自Telerik示例代码.

template:"<input type='checkbox' #= IsAdmin ? checked='checked':'' # />
Run Code Online (Sandbox Code Playgroud)

最终,这会生成一个输入标记,如果IsAdmin的值为true,则包含"checked ='checked'"

我不明白评估的背景

#= IsAdmin ? checked = 'checked' : '' #
Run Code Online (Sandbox Code Playgroud)

文档说"#="表示"渲染为文字"(无论这意味着什么),我理解"IsAdmin"是评估/执行模板时提供的值.

#=后面的内容看起来像Javascript,但如果只是那样,它只会将名为"checked"的变量的值设置为"checked"或空字符串.

是个 ?这里的运算符真的是javascript,还是剑道模板语言?我没有看到过与运营商特定的Kendo特定语言.但如果这真的是一个Javascript?运算符,它是如何工作的,我们得到一个文字"checked ='checked',而不是设置一个名为"checked"的var,值为'checked'.

叫我困惑.

javascript templates telerik kendo-ui kendo-grid

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

使用控制台记录器的控制台应用程序不会写入最终消息。轻松重现

Windows 上使用 LoggerFactory 的 .net 6 控制台应用程序 - 最终消息不会出现在控制台上。loggerFactory.Dispose() 没有帮助。Ilogger 没有 Dispose() 方法。

这是一个复制品。大约会出现 20 到 70 条循环消息。之后就什么都没有了。

using var loggerFactory = LoggerFactory.Create(builder =>
{
    builder
        .AddFilter("Microsoft", LogLevel.Warning)
        .AddFilter("System", LogLevel.Warning)
        .AddFilter("MyTestApp.Program", LogLevel.Debug)
        .AddConsole();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
try
{ 
    logger.LogInformation("Starting");
    for (var i=0; i < 100; i++)
    {
        logger.LogInformation($"This is a nice long message for {i}.");
    }
    throw new Exception("boom");
}
catch (Exception e)
{
    logger.LogInformation(e.ToString());
}
finally
{
    loggerFactory.Dispose();
}

Run Code Online (Sandbox Code Playgroud)

logging flush .net-core

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

wix WixStdbaLicenseUrl在使用自定义主题时不隐藏许可证

我用它来隐藏许可证对话

<WixVariable Id="WixStdbaLicenseUrl" Value=""/
Run Code Online (Sandbox Code Playgroud)

哪个有效,直到我介绍一个自定义主题使用

<WixVariable Id="WixStdbaThemeXml" Value="Resource\RtfTheme.xml" />
<WixVariable Id="WixStdbaThemeWxl" Value="Resource\RtfTheme.wxl" />
Run Code Online (Sandbox Code Playgroud)

我的主题只是内置RtfTheme的一个副本,经过微调.我改变了窗口大小,并删除了修复按钮.

当我这样做时,会显示许可证对话框(尽管文本为空).我希望对话保持隐藏.

为什么?怎么修?

这是我尝试过的几种变体之一:

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" >
    <bal:WixStandardBootstrapperApplication
            LicenseFile="..\..\Tools\Building\buildIncludes\LicenseAgreement-Memo.rtf"
      LogoFile="..\..\Tools\Building\buildIncludes\my.logo.png"
            SuppressOptionsUI="yes"
   />

</BootstrapperApplicationRef>
<!-- supress license display in boot strapper -->
<WixVariable Id="WixStdbaLicenseUrl" Value=""/>
<WixVariable Id="WixStdbaLicenseFile" Value=""/>
<!-- we are using a customized theme -->
<WixVariable Id="WixStdbaThemeXml" Value="Resource\RtfTheme.xml" />
<WixVariable Id="WixStdbaThemeWxl" Value="Resource\RtfTheme.wxl" />
Run Code Online (Sandbox Code Playgroud)

wix burn

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