我创建了类库,其中一些是世界各地的其他人使用的,现在我开始使用Visual Studio 2010,我想知道切换到使用代码契约是多么好的想法,而不是常规的旧代码 - 风格if语句.
即.而不是这个:
if (fileName == null)
throw new ArgumentNullException("fileName");
Run Code Online (Sandbox Code Playgroud)
用这个:
Contract.Requires(fileName != null);
Run Code Online (Sandbox Code Playgroud)
我问的原因是我知道静态检查器不可用,所以我对我做的一些假设有点紧张,编译器无法验证.当有静态检查程序时,这可能导致类库无法为下载它的人编译.这个,再加上我甚至无法重现这个问题的事实,会让它很难解决,而且我会认为它不会说我的类库的质量如果它看起来甚至没有编译出来的框.
所以我有几个问题:
任何的建议都受欢迎.
编辑:让我澄清一下我的意思.
假设我在类中有以下方法:
public void LogToFile(string fileName, string message)
{
Contracts.Requires(fileName != null);
// log to the file here
}
Run Code Online (Sandbox Code Playgroud)
然后我有这个代码:
public void Log(string message)
{
var targetProvider = IoC.Resolve<IFileLogTargetProvider>();
var fileName = targetProvider.GetTargetFileName();
LogToFile(fileName, message);
}
Run Code Online (Sandbox Code Playgroud)
现在,在这里,IoC启动,解决了一些"随机"类,它为我提供了一个文件名.让我们说对于这个库,没有办法可以找回一个不会给我一个非空文件名的类,但是,由于IoC调用的性质,静态分析无法验证这个,因此可能假设一个可能的值可能为null.
因此,静态分析可能会得出结论,存在LogToFile使用null参数调用方法的风险,因此无法构建.
我理解我可以在代码中添加假设,说编译器应该认为fileName我从该方法返回的那个永远不会为null,但是如果我没有静态分析器(VS2010 Professional),那么代码会为我编译,因此我可能会将此作为一个睡眠错误,让终极找到的人.换句话说,这里可能没有编译时警告可能存在问题,因此我可能会按原样释放库.
这是一个真实的场景和问题吗?
当两个合并的分支对同一个文件进行更改时,Mercurial是否始终使用外部合并工具?
或者它是否首先看到它是否可以合并文件本身,并且如果它不能,只能向外部工具发送?
我问的原因是我(再一次)重读了Joel Spolsky在Mercurial上写的教程,他说,在比较Subversion和Mercurial合并的方式时:
相比之下,当我们在Mercurial中单独工作时,Mercurial正忙着保留一系列变更集.因此,当我们想要将我们的代码合并在一起时,Mercurial实际上有更多的信息:它知道我们每个人都改变了什么并且可以重新应用这些更改,而不仅仅是查看最终产品并试图猜测如何放置它一起.
只是,我的经验告诉我,当两个分支对同一文件进行更改时,似乎涉及外部合并工具.因此,这不会导致上述论点不正确吗?
或者我应该解释如下:
有人可以对此有所了解吗?
编辑:让我举个例子:
@echo off
setlocal
if exist repo rd /s /q repo
md repo
cd repo
hg init .
rem --- version 0 ---
echo 1 >test.txt
echo 2 >>test.txt
echo 3 >>test.txt
echo 4 >>test.txt
echo 5 >>test.txt
hg add test.txt
hg commit -m "v0"
rem --- version 1 ---
echo 1 >test.txt
echo 2 v1 >>test.txt
echo 3 >>test.txt
echo 4 >>test.txt
echo 5 …Run Code Online (Sandbox Code Playgroud) 我阅读了本文档:Mercurial分支指南,特别是标题为使用书签分支的部分.
它说:
现在,您在当前变更集中有两个分支(基本上是标记).
要切换到其中一个分支,您可以使用
hg update feature更新到该分支的tip变更集,并将自己标记为在该分支上工作.提交时,它会将书签移动到新创建的变更集.
我尝试了这个,但它最终同时移动了两个书签.
该指南是错误的,过时的,还是我做错了什么?请注意,我知道在单独的分支上设置书签只会移动与我当前正在处理的分支相关的书签,但是该指南(很多人说这是明确的指南)具体说明上述文本,表明它应该通过"告诉"Mercurial我正在研究哪个书签(分支)来工作.
但测试显示不然.
有任何想法吗?
例:
> hg init > echo 1 >test.txt > hg commit -m "initial" --addremove adding test.txt > hg bookmark main > hg bookmark feature > hg log changeset: 0:c56ceb49ee20 tag: feature tag: main tag: tip user: Lasse V. Karlsen <lasse@vkarlsen.no> date: Tue Nov 30 23:06:16 2010 +0100 summary: initial > hg update feature 0 files updated, 0 files merged, 0 files removed, 0 files …
我正在尝试使用非接触式OmniKey 5321读卡器读取智能卡信息.
编辑:添加了赏金.
我正在.NET 3.5程序中编写C#3,所以这是一个Windows应用程序.
该卡上印有一些信息,我会假设,卡片数据中存在某些信息(下面有卡片和读卡器的照片.)
该卡上印有以下信息:
1* 00447 21091328-32
使用OmniKey读卡器附带的诊断应用程序时,我会收到以下信息:
Smart Card Name: iCLASS 16KS UID:EE 74 0E 00 FB FF 12 E0 ATR : 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 1A 00 00 00 00 78 Protocol : ISO 15693 (Part 2)
现在,我已经考虑了一些转换:
这是我的问题:
这是照片,如果它给你任何信息.

uniqueidentifier smartcard smartcard-reader winscard iso-15693
我有一个当前的网页构建,右侧边栏是固定位置.我试图从右边定位,但不希望它与其他div内容重叠.
我正在寻找的是当内容超出视口窗口时,内容可以水平向右滚动.任何帮助将不胜感激.
与此类似:http://demo.rickyh.co.uk/css-position-x-and-position-y/但是我不能让这个工作.
这已通过替代方法解决.感谢那些真正考虑过帮助的人.
我已经创建了一个 SignalR 应用程序,但是当我在集线器配置中设置 KeepAliveInternal 和 ClientTimeOutInterval 一个值时,应用程序会忽略它并始终将两者都设置为“30,000ms”。这是我的代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddSignalR().AddHubOptions<ActivityHub>(SetConfig);
// Local function to set hub configuration
void SetConfig(HubOptions<ActivityHub> options)
{
options.ClientTimeoutInterval = TimeSpan.FromMinutes(30);
options.KeepAliveInterval = TimeSpan.FromMinutes(15);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了 SignalR Net Core 文档,这两个属性没有限制。超时总是“30,000”,即使我将它们设置为不同的值。
在Win32中,有没有办法获得一个独特的cpu循环计数或类似的东西,对于多个进程/语言/系统/等是统一的.
我正在创建一些日志文件,但是必须生成多个日志文件,因为我们正在托管.NET运行时,并且我想避免从一个调用到另一个来进行日志记录.因此,我认为我只生成两个文件,将它们组合在一起,然后对它们进行排序,以获得涉及跨世界调用的连贯时间线.
但是,每次通话都不会增加GetTickCount,因此不可靠.是否有更好的号码,以便在排序时以正确的顺序接听电话?
编辑:感谢@Greg把我带到QueryPerformanceCounter的轨道,这就是诀窍.
如果我在当地有一个相当大的Mercurial项目,并希望进行实验,我是否可以安全地制作一份本地副本并在那里工作?
例如,假设我这样做:
这样安全吗?或者在克隆时是否生成了一些唯一的ID?
一个项目相当大,服务器的连接速度相当慢,或者看起来如此,所以从中央服务器完成一个完整的克隆需要很长时间.
是否有任何软件包可用于在我自己的服务器上托管Mercurial存储库,除了它附带的非常基本的脚本?
我查看了Mercurial 上的PublishingRepositories维基页面,该列表中唯一可行的替代方案是hgwebdir我设置的脚本,但它相当基本.
有没有人为Mercurial托管制作更好的网站软件?
我正在尝试使用SharpDX使用DirectX创建一个简单的迷宫式2D程序.
为此,我想创建位图,我可以在屏幕上呈现墙壁,走廊,迷宫外等.
但是,我似乎无法弄清楚如何将现有的图像文件加载到SharpDX库中的Bitmap类中,或者如何从头开始创建一个新的这样的Bitmap类.
由于所有类都被称为直接映射到DirectX类型,我想这只是意味着我需要学习更多的DirectX,但我希望有一个简单的例子可以告诉我我需要做什么.
如果我必须从头开始构建一个新的Bitmap并绘制它,我可以做到这一点,获得我需要的像素并不困难,但我似乎无法弄清楚那部分.
有没有人对SharpDX库有任何经验,可以给我一些指示?
mercurial ×4
branch ×3
.net ×1
asp.net-core ×1
azure ×1
bitmap ×1
bookmarks ×1
c# ×1
c#-4.0 ×1
clone ×1
cpu-cycles ×1
css ×1
css-position ×1
deployment ×1
directx ×1
dvcs ×1
hosting ×1
image ×1
iso-15693 ×1
jquery ×1
merge ×1
position ×1
signalr ×1
smartcard ×1
svn ×1
timer ×1
winapi ×1
winscard ×1