这是我的代码:
public void ReadSomeFile(string filePath)
{
if (!File.Exists(filePath))
throw new FileNotFoundException();
var stream = new FileStream(filePath, ....)
.....
}
Run Code Online (Sandbox Code Playgroud)
我应该自己抛出异常(见File.Exists
支票)吗?如果文件不存在,FileStream
则会抛出FileNotFoundException
.这里有什么好的编程习惯?代码分析说我们应该验证我们的参数.但是如果我将该参数直接传递给另一个方法(我的或其他代码)并且该方法本身会抛出异常,那么在我的代码中验证参数的优点是什么?
现在这是一个真正奇怪的错误.我正在研究WPF应用程序并关注MVVM.在我的MainWindow中,我正在设置视图和查看模型,我得到了这个奇怪的错误.虽然它构建良好,应用程序运行正常,但为什么我收到此错误.
我也跟着一些类似但没有找到合适的答案.我试图重新启动visual studio并清理和重建,但我仍然面临这个错误.
所以这是代码.
<Window x:Class="MyProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:v="clr-namespace:MyProject.Views"
xmlns:vm="clr-namespace:MyProject.ViewModels"
xmlns:p="clr-namespace:MyProject.Properties"
Title="{x:Static p:Resources.Title}" Height="400" Width="750" MinHeight="400" MinWidth="750">
<Window.Resources>
<DataTemplate DataType="{x:Type vm:MainPageViewModel}">
<v:MainPageView/>
</DataTemplate>
</Window.Resources>
Error 1 The name "MainPageViewModel" does not exist in the namespace "clr-namespace:MyProject.ViewModels".
Run Code Online (Sandbox Code Playgroud)
这是我的ViewModel
namespace MyProject.ViewModels
{
public class MainPageViewModel : PropertyChangedBase
{
public MainPageViewModel()
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么什么是真正的错误.我顺便使用Visual Studio 2012.
更新: 我的视图模型和视图位于同一个项目中.我没有参考任何其他项目.并且MyProject.ViewModels.MainPageViewModel存在.
我MS unit testing framework
用来测试我的C#库.我必须打开一个我正在部署的文件DeploymentItem attribute
.但它没有将文件部署到Test部署目录.
在我的Unit-test项目中,我TestFile
在这个文件夹中创建了一个文件夹,里面有多个文件,比如a.txt,b.txt.
现在在我的Unit-test类中,我添加了DeploymentItem属性.但文件没有被复制.
这是我的代码.
[TestClass]
[DeploymentItem("TestFile")]
public class CustomLibraryTest
{
public TestContext TestContext { get; set; }
[TestMethod]
[DeploymentItem(@"TestFiles\a.txt")] // THis should deploy a.txt to test deployment directory
{
var path = TestContext.TestDeploymentDir + "a.txt";
// Now when I debug this unit-test, and open path in explorer,
// a.txt is not present in "TestResults\Deploy_fhafeez 2013-05-28 13_02_37\Out" folder
}
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
c# unit-testing deploymentitem vs-unit-testing-framework visual-studio-2012
我有两个类几乎相同,除了存储在它们中的数据类型.一个类包含所有double值,而other包含所有float值.
class DoubleClass
{
double X;
double Y;
double Z;
}
class FloatClass
{
float X;
float Y;
float Z;
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个DoubleClass,我想转换为FloatClass.
var doubleObject = new DoubleClass();
var convertedObject = (FloatClass)doubleObject; // TODO: This
Run Code Online (Sandbox Code Playgroud)
一种简单的方法是创建一个创建新FloatClass对象的方法,填充所有值并返回它.有没有其他有效的方法来做到这一点.
我有一个使用输出参数的函数.我怎么能模仿这个功能?
我的功能是:
GetProperties(out string name, out string path, out string extension);
Run Code Online (Sandbox Code Playgroud)
在我的原始代码中,我这样做:
string Name;
string Path;
string Extension;
MyObject.GetProperties(out Name, out Path, out Extension);
Run Code Online (Sandbox Code Playgroud)
现在,我怎么能嘲笑这个?
我有一个通过插座连接的硬件,
现在我必须每隔5秒检查硬件是否已连接,复选框显示
我已经实现了一个功能:
private static System.Timers.Timer aTimer;
public MainWindow()
{
InitializeComponent();
client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client);
aTimer = new System.Timers.Timer();
aTimer.AutoReset = true;
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
if (client.Connected == true)
{
Console.WriteLine("Not Connected");
CheckBox.IsChecked = false;
}
else
{
Console.WriteLine("Connected");
CheckBox.IsChecked = false;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行应用程序时,它会抛出错误.
调用线程无法访问此对象,因为另一个线程拥有它.
我研究并了解了Dispatcher.Invoke但未能在我的代码中实现它.
我正在使用gmock进行单元测试C++代码.我没有使用gtest框架.我正在使用visual studio 2008的内置测试框架.
现在我的问题是我必须手动将真实类的模拟类写入单元测试.例如,如果我有一个包含5个函数的A类,那么我必须编写带有5个函数的MockAClass.有没有办法自动生成这些类.
class AClass
{
public:
virtual int AFunction()
{
return 5;
}
virtual int AFunctionWithArguments(int x)
{
return x;
}
class MockAClass : public AClass
{
public:
MOCK_METHOD0(AFucntion, int());
MOCK_METHOD1(AFunctionWithArgument, int(int x));
};
Run Code Online (Sandbox Code Playgroud) 我正在按照MVVM模式制作WPF应用程序.在这我使用实体框架,
我的实体结构很简单,它有3个实体:部门,课程,书籍,
一个部门可以有很多课程,一门课程可以有很多书,
现在我想在树视图中显示这个,所以我在wpf中的输出应该是这样的,
Department1
Course1
Book1
Book2
Course2
Book3
Department2
Course
Book
Department3
Run Code Online (Sandbox Code Playgroud)
在我的ViewModel中我有EntityContext对象.但我不知道如何在树视图中显示这一点.我怎么能做到这一点.
我正在使用C#中的Excel工作表,我很惊讶只选择excel表.我尝试了以下代码
OpenFileDialog browseFile = new OpenFileDialog();
browseFile.DereferenceLinks = true;
browseFile.Filter = "Excel|*.xls|Excel 2010|*.xlsx";
// browseFile.Filter = "Link Files (*.lnk)|*.lnk";
browseFile.Title = "Browse Excel file";
if (browseFile.ShowDialog() == DialogResult.Cancel)
Run Code Online (Sandbox Code Playgroud)
使用此代码不仅获得Excel工作表,而且最终获得快捷方式文件.任何人都可以建议我如何限制快捷方式文件.
我正在使用Moq编写单元测试.我创建了一个模拟对象.现在,当我尝试模拟其属性时,我收到错误"表达式树可能不包含索引属性"
这是我的代码.
public Node GetNode(IMyInterface interface, string itemName)
{
return interface.Items[itemName];
}
Run Code Online (Sandbox Code Playgroud)
这是单元测试
var expected = new Node();
var itemName = "TestName";
var mock = new Mock<IMyInterface>();
mock.Setup(f => f.Items[itemName]).Returns(expected);
var target = new MyClass();
var actual = target.GetNode(mock.Object, itemName);
Assert.AreEqual(expected, actual);
Run Code Online (Sandbox Code Playgroud)
这条线给了我错误.
mock.Setup(f => f.Items[itemName]).Returns(expected);
Run Code Online (Sandbox Code Playgroud)
我怎么能这个功能.