最近宣布的.NET 4.0托管可扩展性框架(MEF)是一个依赖注入框架吗?模式和实践中的Microsoft Unity在4.0中是否会过时?MEF与Unity这样的框架相比如何?
我在一个类中有一个属性"EntityID".Resharper(5.1)说
名称"EntityID"与规则"方法,属性和事件"不匹配.建议的名称是'EntityId'.
但恕我直言,根据类库开发人员设计指南中的命名惯例.'EntityID'应该非常好:
- 不要使用计算领域通常不接受的首字母缩略词.
- 在适当的地方,使用众所周知的首字母缩略词来替换冗长的短语名称.例如,使用UI作为用户界面,使用OLAP进行在线分析处理.
- 使用首字母缩略词时,请使用Pascal case或camel case作为长度超过两个字符的首字母缩略词.例如,使用HtmlButton或htmlButton.但是,您应该将仅包含两个字符的首字母缩写词大写,例如System.IO而不是System.Io.
- 不要在标识符或参数名称中使用缩写.如果必须使用缩写,请将camel case用于包含两个以上字符的缩写,即使这与单词的标准缩写相矛盾
*更新:*指南的最新版本还说:
除了骆驼标识符的第一个单词之外,请将两个字符的首字母缩写大写. 名为DBRate的属性是用作Pascal标识符的第一个单词的简短缩写(DB)的示例.名为ioChannel的参数是用作驼峰标识符的第一个单词的简短首字母缩写词(IO)的示例.
我是否正确理解指南?如果是这样,我怎么能让ReSharper接受"EntityID"(众所周知的两个字母的缩写),但拒绝"HTMLReader"(它应该是HtmlReader).
在日常使用中,NCrunch与ReSharper的合作程度如何?它们可以并排运行而没有任何(可用的)故障吗?表现还行吗?有什么值得注意的吗?ReSharper测试人员是否还能工作?
在TreeView没有焦点的情况下,有一种简单的方法可以让选定的TreeNode保留其SystemColors.Highlight BackColor吗?因为即使将HideSelection设置为false,也几乎无法看到所选的BackColor.
TreeView具有焦点时选择的TreeNode:
TreeView没有焦点时选择的TreeNode:
提前致谢.
编辑:我知道我可以将DrawMode设置为OwnerDrawAll然后添加自定义DrawNode事件.我之前尝试过这个问题,我遇到的问题是我不知道如何正确地绘制TreeNode的相应ImageKey.
当我启动只有一个AppDomain的应用程序时,AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
为null.即使我在MyApp.exe.config中设置了探测路径,如下所示.
我会想到AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
包含字符串"Dir1;Dir2;Dir3"
.
如何访问MyApp.exe.config中配置的探测路径?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="Foo" value="Bar" />
</appSettings>
<startup>
<!-- supportedRuntime version="v1.1.4322" / -->
</startup>
<runtime>
<gcConcurrent enabled="true" />
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<publisherPolicy apply="yes" />
<!-- Please add your subdirectories to the probing path! -->
<probing privatePath="Dir1;Dir2;Dir3" />
</assemblyBinding>
</runtime>
<system.windows.forms jitDebugging="true" />
</configuration>
Run Code Online (Sandbox Code Playgroud)
更新
正如Hans Passant指出下面的评论,SetupInformation.PrivateBinPath
没有为主appdomain设置.所以上面的方法不起作用.您有什么建议来模拟融合在探测路径中搜索程序集的方式,或者至少考虑<probing privatePath="" />
当前应用程序配置?我能想到的最好的事情是<probing privatePath="" />
当前域是主appdomain(AppDomain.CurrentDomain.IsDefaultAppDomain()
是true
)时手动从App.config 读取.有没有更好的办法? …
有没有办法在VS Code(在macOS上)同时设置断点并调试javascript和c#?
我已经安装了chrome调试器扩展,然后使用创建了一个新的MVC应用程序dotnet new mvc
.
但是,当我启动应用程序断点时,只会在C#文件中命中,它们会在js文件(site.js)中保持灰色,因为没有加载任何符号.
这些是我的启动设置(我唯一修改的是osx
command
因为chrome不是我在macOS上的默认浏览器):
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceRoot}/bin/Debug/netcoreapp1.1/Foo.PhotoSite.dll",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
},
"linux": {
"command": "xdg-open" …
Run Code Online (Sandbox Code Playgroud) 我需要运行使用devenv.exe
(或devenv.com
就此而言)构建可视化工作室解决方案的脚本.对于visual studio 2015 %VS140COMNTOOLS%
,我可以使用一个环境变量 来查找devenv的安装位置.由于Visual Studio 2017 没有%VS150COMNTOOLS%
,因此devenv
在脚本(bat或powershell)中查找安装位置的可靠方法是什么.
我刚刚注意到,当我ViewModel
从后台工作线程更改我的(MVVM)中的绑定属性时,我没有得到任何异常,并且视图已正确更新.这是否意味着我可以安全地依赖于wpf数据绑定编组ViewModel
UI线程中的所有更改?我想我已经读过一个应该确保(在ViewModel
)INotifyPropertyChanged.PropertyChanged
线程上触发的内容.这有什么改变在3.5或什么?
如何为ViewModel可混合(可在表达式混合中设计)创建Datatemplate.当我转到资源并尝试直接编辑DataTemplate时,我在Drawingborad上看到的是一个空白矩形.这是因为DataTemplate没有绑定任何东西.当然我可以创建一个UserControl并在那里的代码中创建一些设计时数据来查看模板,但我现在必须在资源(编辑)和用户控件(查看我的编辑结果)之间来回切换.是不是有更直接的方式来编辑和查看我的DataTemplate?
c# ×5
.net ×2
resharper ×2
wpf ×2
custom-draw ×1
data-binding ×1
datatemplate ×1
debugging ×1
devenv ×1
javascript ×1
linq ×1
mef ×1
mvvm ×1
ncrunch ×1
treeview ×1
winforms ×1