小编Den*_*sky的帖子

覆盖GetHashCode

如您所知,GetHashCode返回一个半唯一值,可用于标识集合中的对象实例.作为一种好的做法,建议覆盖此方法并实现自己的方法.

我的问题是 - 在处理自定义对象时是否覆盖此方法?如果是这样,您使用什么算法来生成唯一ID?

我正在考虑生成GUID,然后从该识别器获取整数数据.

c# algorithm methods overriding gethashcode

31
推荐指数
2
解决办法
5万
查看次数

低级差异:使用静态方法的非静态类与使用静态方法的静态类

我想知道使用静态类的静态类与使用相同静态方法的静态类的一般好处(或缺点),除了我不能使用非静态类的静态方法扩展方法.

例如:

class NonStaticClass
{
    public static string GetData()
    {
        return "This was invoked from a non-static class.";
    }
}
Run Code Online (Sandbox Code Playgroud)

对此:

static class StaticClass
{
    public static string GetData()
    {
        return "This was invoked from a static class.";
    }
}
Run Code Online (Sandbox Code Playgroud)

使用一种方法比另一种方法有什么性能/内存含义?

注意:假设我不需要实例化该类.我的用例场景仅限于以下内容:

Console.WriteLine(NonStaticClass.GetData());
Console.WriteLine(StaticClass.GetData());
Run Code Online (Sandbox Code Playgroud)

.net c# performance static-classes

13
推荐指数
1
解决办法
2547
查看次数

以编程方式更改可执行文件的图标

我正在开发一个名为WeatherBar的应用程序.它的主要功能是基于它与Windows 7任务栏的交互 - 它根据特定位置的天气条件更改图标.

我在应用程序中使用的图标都存储在已编译的本机资源文件(.res)中 - 我使用它而不是仅用于图标的嵌入式资源清单.默认情况下,我修改主窗体的Icon属性以相应地更改图标,只要图标未固定到任务栏,它就可以正常工作.当它被固定时,任务栏中的图标会自动切换到可执行文件的默认图标(资源文件中的索引为0).

在做了一些研究后,我发现更改图标的方法是更改​​快捷方式图标(因为所有固定应用程序实际上都是存储在用户文件夹中的快捷方式).但它没有用.

我假设我需要更改可执行文件的图标,因此使用UpdateResource,但我不完全确定.我的可执行文件未经过数字签名,因此修改它不应该是一个问题.

解决这个问题的方法是什么?

c# windows icons taskbar windows-7

12
推荐指数
1
解决办法
1万
查看次数

有没有办法将Setter元素放在EventTrigger中?

在WPF应用程序上工作,我开始研究自定义ControlTemplate.当事件发生时,我达到了需要更改某些控件属性的程度.

为此,有Setter元素.看起来很好,但我不能在EventTrigger元素中使用它们.例如,如果使用可以绑定到控件属性的简单触发器,则可以在内部使用Setter元素.但是,我不想绑定属性更改而是绑定到事件.

有没有办法在纯XAML中执行此操作,还是我必须在代码隐藏中工作?

.net windows wpf xaml

11
推荐指数
1
解决办法
6678
查看次数

docker build在云虚拟机上失败

我在Azure VM中运行了一个Ubuntu 16.04(Xenial).我按照说明安装了Docker,一切看起来都很好,花花公子.

我触发时需要做的一件事docker run就是传递--net=host,这允许我apt-get update在容器内运行和其他依赖于互联网的命令.

当我尝试docker build基于现有的Ubuntu映像触发时出现问题.它失败:

在此输入图像描述

这里的问题是没有办法传递--net=host给build命令.我看到Docker GitHub上存在问题(#20987,#10324),但没有明确的解决方案.

有一个堆栈溢出现有的答案,涵盖我想要的场景,但这并不云VM内运行.

对可能发生的事情的任何想法?

更新1:

这是docker version输出:

Client:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 22:11:10 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 22:11:10 2016
 OS/Arch:      linux/amd64
Run Code Online (Sandbox Code Playgroud)

更新2:

以下是来自的输出docker network ls:

NETWORK …
Run Code Online (Sandbox Code Playgroud)

cloud ubuntu containers azure docker

11
推荐指数
1
解决办法
639
查看次数

堆栈面板或网格哪一个是最可取的

我听说带有Stack面板的UI设计比Grids更具推广性.那是否存在任何事实.我通常使用Grid来设计我的UI,最近在一个文档中我读到Grid需要更多的时间来渲染而不是堆栈面板; 所以我对此非常困惑..请给我更多关于此的信息......(WP7开发)

.net silverlight stackpanel windows-phone-7

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

在Visual Studio中为项目创建目标OBJ文件夹

是否可以像创建BIN文件夹一样创建目标OBJ文件路径?您可以在项目的属性中设置输出路径.示例路径为:Bin\Debug\Windows Phone 7\Bin\Debug\NETMF\Bin\Debug .... \

这里的一个用例是我有多个针对不同平台的项目.在编译时,OBJ文件是共享的,而不是像bin文件夹那样分离出来.在编译时,您会遇到同时利用OBJ文件夹并引发错误的竞争条件.

msbuild compilation visual-studio

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

Windows 11 上下文菜单样式

为 Windows 窗体上下文菜单控件(使用ContextMenuStrip)提供的默认样式看起来像是为 Office XP 创建的样式 - 其样式与 Windows 11 的样式不太匹配。

Windows 11 中旧的上下文菜单示例

相比之下,现代 Windows 11 上下文菜单具有圆角并且具有主题感知功能:

主题感知的 Windows 11 上下文菜单

即使对于某些遗留应用程序不具有主题感知的情况,它仍然使用圆角。

现代 Windows 11 上下文菜单示例

如何从 Windows 窗体(或控制台)应用程序复制 Windows 11 托盘图标的主题感知样式和现代(圆角)上下文菜单?

理想情况下,我尝试不要从头开始编写整个托盘菜单渲染器,而只是重用内置操作系统组件,但到目前为止,在弄清楚我需要使用什么工具来完成任务时,我遇到了困难。拿到菜单。

.net c# windows winapi winforms

7
推荐指数
1
解决办法
3073
查看次数

WebBrowserTask失败

以下代码有时会起作用,而且大部分时间都不起作用:

WebBrowserTask wbt = new WebBrowserTask();
        wbt.URL = url;
        wbt.Show();
Run Code Online (Sandbox Code Playgroud)

在仿真器和真实设备(HTC HD7)上.它将调出Web浏览器(IE),但它不会放入URL或导航到它.

是什么赋予了?

browser task windows-phone-7 windows-phone

6
推荐指数
2
解决办法
1199
查看次数

在 GitHub Actions 中使用文本转换 (.tt) 模板

我正在尝试将文本转换模板(Visual Studio 的一项功能)与 GitHub Actions 结合使用。我专门使用 Windows 运行程序,它安装了 Visual Studio 2022 Enterprise,因此依赖项应该存在。

在我的.csproj文件中,我设置了如下配置:

<PropertyGroup>
    <CustomPathToTransforms>$(MSBuildExtensionsPath)</CustomPathToTransforms>
</PropertyGroup>
    
<Import Project="$(CustomPathToTransforms)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TextTemplating\Microsoft.TextTemplating.targets" />
Run Code Online (Sandbox Code Playgroud)

然后,我还确保在构建期间发生转换:

<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
    <TransformOutOfDateOnly>false</TransformOutOfDateOnly>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

在本地,这与 Visual Studio 2022 社区版配合良好。我添加另一个属性 ( ) 的原因CustomPathToTransforms是,在 GitHub Actions 中,我可以将其重定向到 Visual Studio 安装文件夹,而不是 .NET 工具文件夹,否则会通过MSBuildExtensionsPath.

在 GitHub Actions 中,我运行构建如下:

dotnet build --configuration Release -p:CustomPathToTransforms="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Msbuild\"
Run Code Online (Sandbox Code Playgroud)

理论上,这应该可行,并且我可以从构建输出中看出目标已正确找到,但是该步骤失败得相当惊人:

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Msbuild\Microsoft\VisualStudio\v17.0\TextTemplating\Microsoft.TextTemplating.targets(347,5): error MSB4018: The "TransformTemplates" task failed unexpectedly. [D:\a\grunt\grunt\Grunt\Grunt\Grunt.csproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Msbuild\Microsoft\VisualStudio\v17.0\TextTemplating\Microsoft.TextTemplating.targets(347,5): error MSB4018: System.TypeLoadException: Could …
Run Code Online (Sandbox Code Playgroud)

.net msbuild csproj visual-studio github-actions

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