我正在按照Scott Gu的一个教程来引用一个名为DbContext的类.我无法在框架4上的任何命名空间中找到它,在我看来,它已从CT4 DbContext重命名为.net4 System.Data.Linq.DataContext.我的假设是否正确?
我可能会遇到星期一的愚蠢,但是在我将它们添加到后面的代码中后,我找不到扩展所有树视图节点的好方法(比如treeView.ExpandAll()).
有什么快速帮助?
基本问题是如何创建需要调用方法的单元测试,等待测试类上的事件发生,然后调用另一个方法(我们实际想要测试的方法)?
如果您有时间进一步阅读,这是场景:
我正在开发一个必须控制硬件的应用程序.为了避免硬件可用性的依赖性,当我创建对象时,我指定我们在测试模式下运行.当发生这种情况时,正在测试的类会创建适当的驱动程序层次结构(在这种情况下是一个精简的模拟硬件驱动程序层).
想象一下,所讨论的课程是电梯,我想测试给出电梯所在楼层号的方法.以下是我的虚拟测试现在的样子:
[TestMethod]
public void TestGetCurrentFloor()
{
var elevator = new Elevator(Elevator.Environment.Offline);
elevator.ElevatorArrivedOnFloor += TestElevatorArrived;
elevator.GoToFloor(5);
//Here's where I'm getting lost... I could block
//until TestElevatorArrived gives me a signal, but
//I'm not sure it's the best way
int floor = elevator.GetCurrentFloor();
Assert.AreEqual(floor, 5);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
感谢所有的答案.这就是我最终实现它的方式:
[TestMethod]
public void TestGetCurrentFloor()
{
var elevator = new Elevator(Elevator.Environment.Offline);
elevator.ElevatorArrivedOnFloor += (s, e) => { Monitor.Pulse(this); };
lock (this)
{
elevator.GoToFloor(5);
if (!Monitor.Wait(this, Timeout))
Assert.Fail("Elevator did not reach destination in …
Run Code Online (Sandbox Code Playgroud) 我正试图在我正在创建的按钮的控制模板上复制如今时尚的"反射"效果.
基本思想是创建一个矩形,其渐变填充从白色到透明,然后用矩形几何体剪切一些半透明矩形.
问题是我不知道如何定义相对矩形几何.我通过定义一个大值(1000)来解决宽度问题,但高度是一个问题.例如,它适用于高度为200的按钮,但对于较小的按钮不起作用.
有任何想法吗?
<Rectangle RadiusX="5" RadiusY="5" StrokeThickness="1" Stroke="Transparent">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,0.55">
<GradientStop Color="#66ffffff" Offset="0.0" />
<GradientStop Color="Transparent" Offset="1.0" />
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.Clip>
<RectangleGeometry Rect="0,0,1000,60" />
</Rectangle.Clip>
</Rectangle>
Run Code Online (Sandbox Code Playgroud) 我必须写很多处理串口的代码.通常会在电线的另一端连接一个设备,我通常会创建自己的模拟来模拟它们的行为.
我开始看Moq来帮助我进行单元测试.当你只需要一个存根时,使用它非常简单,但我想知道它是否可行,如果是,我如何为硬件设备创建一个模拟器,根据我想要测试的内容做出不同的响应.
一个简单的例子:
我与之接口的设备之一接收命令(移动到位置x),返回ACK消息并进入"移动"状态,直到它到达有序位置.
我想创建一个测试,我发送移动命令,然后继续查询状态,直到它到达最终位置.
我想为两个不同的测试创建两个版本的模拟,一个是我希望设备成功到达最终位置,另一个是失败.
要问的问题太多了?
给定某个产品积压ID,我想以编程方式检索PBI的子任务列表.
我知道任务中没有一个字段显示"Parent PBI Id".我有一个正在运行的代码版本,但这真的很慢,因为我已经在客户端执行了部分过滤.
看看我现在的表现如何:
string wiqlQuery =
string.Format(
"Select ID, [Remaining Work], State " +
"from WorkItems " +
"where (([Work Item Type] = 'Task')" +
" AND ([Iteration Path] = '{0}' )" +
" AND (State <> 'Removed')" +
" AND (State <> 'Done')) ",
sprint, storyId);
// execute the query and retrieve a collection of workitems
WorkItemCollection workItems = wiStore.Query(wiqlQuery);
if (workItems.Count <= 0)
return null;
var result = new List<TaskViewModel>();
foreach (WorkItem workItem in workItems)
{ …
Run Code Online (Sandbox Code Playgroud) 我正在使用MVVM开发一个WPF应用程序.我的大多数视图只有xaml标记,后面的代码没有任何内容(默认样板除外).
除了一个视图之外的所有视图,当我想要禁用整个屏幕时,我使用装饰器来"屏蔽"屏幕.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//todo: transfer to modelview
contentAreaAdorner = AdornerLayer.GetAdornerLayer(contentArea);
waitingAdorner = new WaitingAdorner(contentArea);
}
Run Code Online (Sandbox Code Playgroud)
这可以吗?或者有更好的方法在我的viewmodel中实现它?
这里有没有人在"Made for iPhone"计划下开发硬件的经验?我有一个通过蓝牙广播信息的设备,到目前为止制作显示该信息的iPhone应用程序的唯一方法是,如果我通过MFi程序并将Apple提供的芯片添加到我的硬件中.
是对的吗?有人有更多细节吗?
在工作中,我们拥有丰富的经验,使用旧版本的代码编写器(CC 3.3)为TI DSP平台开发图像处理应用程序.我们正在使用Eclipse(由Xilinx调整和分发)转换到ARM平台.
在旧的代码编写器中,我们经常使用的一个功能是IDE小部件,它可以将某个内存区域显示为位图图像.它有一个属性网格,您可以在其中定义大小,像素格式和步幅方向等内容,以便将内存blob正确地解释为图片.该工具还具有一些很好的功能,如缩放,灰度计数器,线条轮廓,直方图等.
eclipse有类似的东西吗?如果没有,创建一个有多难?我的意思是,为eclipse创建一个从jtag界面中的内存位置获取信息的裸带插件有多难?
假设我有一个可视对象列表(CustomControls).它们可以在StackPanel内部或者是ListView上的项目,我认为容器是这个问题的答案的一部分.
在视觉上,您可以将这些对象视为队列中的项目.每当我从这个队列的底部弹出一个对象时,我想用弹出的对象走出视图框架来动画整个队列,并且新的一个(假设查看框架只显示一个子集)滑入其余的元素.
创建这个动画的最佳方法是什么?最好的容器是什么?
我有一个类,它将创建一个非常大的数据,我不想被复制.对于所有考虑因素,对于我班级以外的任何人来说,它都是不可变的(只读).
这是一个概念代码,显示了我想如何实现它:
class C {
public:
C();
std::vector<int> const& get_vector() { return m_vector; }
private:
std::vector<int> m_vector;
};
C::C()
{
m_vector.push_back(1);
m_vector.push_back(2);
}
void DisplayVector(std::vector<int> const& new_v)
{
for (int i = 0; i<new_v.size(); i++)
std::cout << new_v[i] << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
C myobj;
std::vector<int> v = myobj.get_vector();
v.push_back(3);
DisplayVector(v);
}
Run Code Online (Sandbox Code Playgroud)
当我单步执行此代码时,我会看到m_vector的给定内存地址及其数组的第一个元素(使用begin iterator).
当我从get_vector返回时,向量"v"及其第一个元素具有完全不同的内存地址.v.push_back(3)修改v没有任何问题(因为它看起来是副本)
当我调用DisplayVector时,它按预期工作,new_v地址与main v相同.
我究竟做错了什么?