设置如下:
public interface IFoo
{
void Fizz();
}
[Test]
public void A()
{
var foo = new Mock<IFoo>(MockBehavior.Loose);
foo.Object.Fizz();
foo.Verify(x => x.Fizz());
// stuff here
foo.Verify(x => x.Fizz(), Times.Never()); // currently this fails
}
Run Code Online (Sandbox Code Playgroud)
基本上我想// stuff here在foo.Verify(x => x.Fizz(), Times.Never())传递中输入一些代码.
因为这可能构成moq/unit测试滥用,我的理由是我可以这样做:
[Test]
public void Justification()
{
var foo = new Mock<IFoo>(MockBehavior.Loose);
foo.Setup(x => x.Fizz());
var objectUnderTest = new ObjectUnderTest(foo.Object);
objectUnderTest.DoStuffToPushIntoState1(); // this is various lines of code and setup
foo.Verify(x => x.Fizz());
// reset the verification …Run Code Online (Sandbox Code Playgroud) 在试图通过ClickOnce发布我的应用程序的Foo和Foo Beta版本的同时,我设法破坏了现有的和以前工作正常的Foo 1.0.0安装(用Foo Beta 1.0.5 替换它,这不起作用)由于使用相同的GUID,程序集名称,产品名称或其他东西.
好吧,诚实的错误.为了恢复此状态,我使用Windows 7添加/删除程序卸载了Foo Beta.
我的计算机现在处于Windows 7添加/删除程序中没有Foo实例出现的状态.但是,Foo Beta仍然显示为已安装.另外,我无法重新安装Foo 1.0.0,因为它认为我的计算机上已经存在更新版本的程序(Foo Beta 1.0.5) - 而是因为更新版本而无法安装该产品已经安装'消息.
如何让我的计算机进入一个既没有安装Foo也没有安装Foo Beta的状态,那么我可以去重新安装Foo?
到目前为止,我已阅读Stack Overflow问题卸载ClickOnce客户端,如何从客户的计算机中删除ClickOnce应用程序的所有痕迹?并试过:
当我运行安装程序时,我仍然收到错误.从哪里找到我的程序的痕迹?为了将来参考,这在哪里记录?
我想设置一个应用程序设置属性,我在我的程序集中定义自定义枚举类型的类型(称之为A计划)
在设置浏览器中,我单击"浏览",然后显示"选择类型"对话框.
项目A中定义的类型似乎不适合我.然而,类型可以从A引用的其他项目中获得.
我似乎无法理解一个人无法使用基础项目中定义的类型,所以我认为我做错了什么.我已经尝试过建造,清洁,重建,重新启动而没有任何运气,所以我到底错过了什么?
我试图通过以下指南来签署一个强名称的程序集:http://msdn.microsoft.com/en-us/library/xc31ft41.aspx
关键指令是:
al /out:<assembly name> <module name> /keyfile:<file name>
Run Code Online (Sandbox Code Playgroud)
它说
module name是用于创建程序集的代码模块的名称
我不明白这意味着什么.从字面意义上讲,我会将上面的内容解释为csc.exe的某些组件(即,它创建了程序集)但显然这在此上下文中是无意义的.
首先,这是指什么,其次(为了帮助我的元学习)如何去推理它是什么?我得到的印象是文档的简洁性,对我来说应该是显而易见或直观的,但目前并非如此.
我尝试指定一些随机名称(例如blah.blah),但得到此错误:
ALINK:错误AL1047:将文件'c:\ path \导入\ proj\bin\Debug\blah.blah'时出错 - 系统找不到指定的文件.
编辑:进一步阅读我得到的印象模块名称是代码的名称,但我没有任何运气指定.cs文件 - 我被告知Database file is corrupt and may not be usable.
假设我用以下内容编写了一个库:
public class Bar { /* ... */ }
public class SomeWeirdClass<T>
where T : ???
{
public T BarMaker(Bar b)
{
// ... play with b
T t = (T)b
return (T) b;
}
}
Run Code Online (Sandbox Code Playgroud)
后来,我希望用户通过定义他们自己的类型来使用我的库,这些类型可以转换为Bar并使用SomeWeirdClass"factory".
public class Foo
{
public static explicit operator Foo(Bar f)
{
return new Bar();
}
}
public class Demo
{
public static void demo()
{
Bar b = new Bar();
SomeWeirdClass<Foo> weird = new SomeWeirdClass<Foo>();
Foo f = weird.BarMaker(b);
}
}
Run Code Online (Sandbox Code Playgroud)
这将编译,如果我设置,where …
最好用一个例子来说明:
class Cat
{
}
class Dog
{
public static implicit operator Cat(Dog d)
{
return new Cat();
}
}
Run Code Online (Sandbox Code Playgroud)
我想告诉一个任意对象,我是否可以把它投射到Cat上.可悲的是,我似乎无法使用is/as运算符.
void Main()
{
var d = new Dog();
if (d is Cat) throw new Exception("d is Cat");
var c1 = (Cat)d; // yes
//var c2 = d as Cat; // Won't compile: Cannot convert type 'Dog' to 'Cat' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
}
Run Code Online (Sandbox Code Playgroud)
我希望避免使用try/catch(InvalidCastException),因为我可能会做很多这样做,这将是非常昂贵的.
有没有办法廉价而轻松地做到这一点?
编辑:感谢你们的答案 - 为所有人投票,希望我能给你们所有的Tick,但是它会向Marc提供最通用的解决方案(在ipod上打出奖金).然而,Jordao的解决方案设法磨练我 …
我有一个简单的控制台测试应用程序ConsoleApplication1.exe,它引用另一个程序集clipper.dll.
在我测试过的3台机器上,可以将两个文件放在例如c:\test\和执行中ConsoleApplication1.exe.
在另一台恰好是客户端计算机的计算机上,运行会ConsoleApplication1.exe导致程序崩溃,并且以下内容将打印到控制台:
C:\test>dir
Volume in drive C has no label.
Volume Serial Number is 7C46-414F
Directory of C:\test
07/12/2010 06:08 PM <DIR> .
07/12/2010 06:08 PM <DIR> ..
07/12/2010 05:13 PM 11,776 ClassLibrary1.dll
07/12/2010 05:13 PM 30,208 ClassLibrary1.pdb
07/12/2010 04:55 PM 3,572 ClassLibrary1.tlb
19/11/2010 02:46 PM 235,008 clipper.dll
19/11/2010 02:46 PM 1,534,976 clipper.pdb
07/12/2010 05:13 PM 6,144 ConsoleApplication1.exe
07/12/2010 05:13 PM 11,776 ConsoleApplication1.pdb
01/08/2010 12:52 PM 139,264 nunit.core.dll
01/08/2010 …Run Code Online (Sandbox Code Playgroud) 我注意到,当我存储一个double值,例如x = 0.56657011973046234在sqlite数据库中,然后在以后检索它时,我得到了y = 0.56657011973046201.根据sqlite规范和.NET规范(我最初都不打算阅读:)这是预期和正常的.
我的问题是,虽然高精度并不重要,但我的应用程序处理用户输入/选择代表基本3D信息的双打,然后对它们运行模拟以查找结果.此输入可以保存到sqlite数据库,以便重新加载并在以后重新运行.
之所以出现这种混淆,是因为新创建的一系列输入显然会在存储和重新加载后以相同的输入方式略微模拟(因为双值已经改变).这是合乎逻辑的,但不是理想的.
我还没有谈到如何处理这个问题,但与此同时我想将用户输入限制/钳位到可以精确存储在sqlite数据库中的值.因此,如果用户输入0.56657011973046234,它实际上被转换为0.56657011973046201.
但是,鉴于一个数字,我无法弄清楚数据库中存储了什么值,而不是实际存储和从数据库中检索它,这看起来很笨拙.有没有确定的方法这样做?
我希望能够以非突兀的方式在vlc中查看我的播放列表.目前它看起来像这样:
我的愿望恰恰相反 - 实际的视频播放占据了屏幕的大部分并且播放列表不显眼地偏向一边(实际上,除了这个bug之外,实际上我可能会对未移动的播放列表感到高兴.
我知道视频和媒体源之间有一个隐藏的缩放器,但在显示的图像中,我无法调整视频部分的大小.
我正在寻找张力流的第一步作为谷歌机器学习科学课程的一部分,并已经困惑.我的理解是(如果我错了,请纠正我):
my_input_fn,该函数将数据格式化为相关的TensorFlow结构传感器train呼叫.my_input_fn以获得连续批量数据以调整模型.(???现在对此嫌疑人)my_input_fn 在这里定义:
def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):
"""Trains a linear regression model of one feature.
Args:
features: pandas DataFrame of features
targets: pandas DataFrame of targets
batch_size: Size of batches to be passed to the model
shuffle: True or False. Whether to shuffle the data.
num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely
Returns:
Tuple of (features, labels) for …Run Code Online (Sandbox Code Playgroud)