我有一些引发PropertyChanged
事件的代码,我希望能够对事件正确引发的单元测试.
提升事件的代码就像
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从单元测试中的以下代码中获得了一个很好的绿色测试,它使用了委托:
[TestMethod]
public void Test_ThatMyEventIsRaised()
{
string actual = null;
MyClass myClass = new MyClass();
myClass.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
{
actual = e.PropertyName;
};
myClass.MyProperty = "testing";
Assert.IsNotNull(actual);
Assert.AreEqual("MyProperty", actual); …
Run Code Online (Sandbox Code Playgroud) 大多数定义说:
抽象工厂提供了一个接口,用于创建相关对象的族,而无需指定其具体类
抽象工厂模式的用途是什么,因为我们可以通过创建具体类本身的对象来实现任务.为什么我们有一个工厂方法来创建Concrete类的对象?
请提供我必须实现abstractFactory模式的任何现实生活示例?
我想显示在外部库中执行的计算进度.
例如,如果我有一些计算方法,并且我想在我的Form类中使用它为100000个值,我可以写:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Caluculate(int i)
{
double pow = Math.Pow(i, i);
}
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Maximum = 100000;
progressBar1.Step = 1;
for(int j = 0; j < 100000; j++)
{
Caluculate(j);
progressBar1.PerformStep();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我应该在每次计算后执行步骤.但是,如果我在外部方法中执行所有100000计算,该怎么办?如果我不想让这个方法依赖于进度条,我什么时候应该"执行步骤"?例如,我可以写
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void CaluculateAll(System.Windows.Forms.ProgressBar progressBar)
{
progressBar.Maximum = 100000;
progressBar.Step = 1;
for(int j = 0; …
Run Code Online (Sandbox Code Playgroud) 我需要保存包含某些XML属性中的换行符的内容,而不是文本.应该选择该方法,以便我能够在XSLT 1.0/ESXLT/XSLT 2.0中对其进行解码
什么是最好的编码方法?
请建议/提出一些想法.
我目前正在编写一个WPF应用程序,它在App.xaml.cs中执行命令行参数处理(这是必要的,因为Startup事件似乎是获取这些参数的推荐方法).根据我想要退出程序的参数,据我所知,应该在WPF中使用Application.Current.Shutdown()
或者在这种情况下(因为我在当前的应用程序对象中)也可能只是this.Shutdown()
.
唯一的问题是这似乎不正常.在Shutdown()
线路仍然被执行后,我已经逐步调试了调试器和代码,这导致了方法之后的错误,因为我预计应用程序不能存活那么长时间.此外,主窗口(在XAML中的StartupUri属性中声明)仍然被加载.
我已经检查了该方法的文档,但在评论中没有发现任何内容,告诉我不应该在使用期间Application.Startup
或根本不使用它Application
.
那么,那时退出程序的正确方法是什么,i.即 对象中的Startup
事件处理程序Application
?
我一直在尝试将一个Entity Framework对象绑定到一个DataGridView,但我一直在追求死胡同,我似乎无法在任何地方找到我的答案.
我可以将整个表(实体)绑定到gridview,它将允许我进行更改并将这些更改保存回DB,如下所示:
WS_Model.WS_Entities context;
private void simpleButton1_Click(object sender, EventArgs e)
{
context = new WS_Entities();
var query = from c in context.Users select c;
var users = query.ToList();
gridControl1.DataSource = users;
}
private void simpleButton2_Click(object sender, EventArgs e)
{
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
但我不想在我的数据库视图中查看数据库中表格中的所有列,所以我尝试这样做...
WS_Entities context = new WS_Entities();
private void simpleButton1_Click(object sender, EventArgs e)
{
var query = from c in context.Users
where c.UserName == "James"
select new { c.UserName, c.Password, c.Description };
var results = query.ToList();
gridControl1.DataSource = results; …
Run Code Online (Sandbox Code Playgroud) 我正在努力理解DDD背后的概念,但我发现通过阅读书籍很难理解,因为他们倾向于以相当抽象的方式讨论这个主题.我希望在代码中看到一些优秀的DDD实现,最好是在C#中.
在开源世界中有没有很好的DDD项目实例?
我有这样的代码:
loopcount = 3
for i in range(1, loopcount)
somestring = '7'
newcount = int(somestring)
loopcount = newcount
Run Code Online (Sandbox Code Playgroud)
所以我想要的是修改循环"内部"的范围.
我编写了这段代码,期望for循环的范围在第一个循环期间会变为(1,7),但它没有发生.
相反,无论我输入什么号码,它只运行2次.(我想要6次......在这种情况下)
我使用print检查了这个值:
loopcount = 3
for i in range(1, loopcount)
print loopcount
somestring = '7'
newcount = int(somestring)
loopcount = newcount
print loopcount
#output:
3
7
7
7
Run Code Online (Sandbox Code Playgroud)
怎么了?号码已经改变.
我的想法错在哪里?
我在DataGridView winforms控件中有一个名为"Quote Price"的列.我可以正确对齐一个没有空格的列,例如"Unit"howerver我无法将列标题与名为"Quote Price"的列名称对齐.我试图使用TopRight,MiddleRight和bottomRight但没有成功.
SelectedAdditionalCost.Columns["Quote Price"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; // Doesn't want to right align
SelectedAdditionalCost.Columns["Quote Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // column contents No worries, right aligns.
Run Code Online (Sandbox Code Playgroud)
我确信我正在做一些非常愚蠢的事情,但是,我无法做到这一点.
我正在尝试上传文件并在下面更改其名称.我需要获取文件扩展名.下面的代码在"Path"下面有一个下划线,我错过了一个using语句吗?或者我正在做什么的正确语法是什么?
if (FileUpload1.HasFile)
try
{
var FileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName).Substring(1);
var newName = DateTime.Now.ToLongDateString();
//Map path to folder
string realpath = Server.MapPath("Pictures\\") + Guid.NewGuid() + FileExtension;
FileUpload1.SaveAs(realpath);
Label1.Text = "File name: " +
FileUpload1.PostedFile.FileName + "<br>" +
FileUpload1.PostedFile.ContentLength + " kb<br>" +
"Content type: " +
FileUpload1.PostedFile.ContentType;
}
catch (Exception ex)
{
//Handle the error
throw ex;
}
else
{
Label1.Text = "You have not specified a file.";
}
Run Code Online (Sandbox Code Playgroud) c# ×6
winforms ×3
datagridview ×2
architecture ×1
data-binding ×1
events ×1
file-upload ×1
for-loop ×1
loops ×1
newline ×1
open-source ×1
progress-bar ×1
python ×1
range ×1
unit-testing ×1
wpf ×1
xml ×1
xslt ×1