小编Dav*_*all的帖子

在C#中引发事件的单元测试

我有一些引发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)

c# events unit-testing

151
推荐指数
4
解决办法
7万
查看次数

为什么我们需要抽象工厂设计模式?

大多数定义说:

抽象工厂提供了一个接口,用于创建相关对象的族,而无需指定其具体类

抽象工厂模式的用途是什么,因为我们可以通过创建具体类本身的对象来实现任务.为什么我们有一个工厂方法来创建Concrete类的对象?

请提供我必须实现abstractFactory模式的任何现实生活示例?

design-patterns abstract-factory

123
推荐指数
4
解决办法
8万
查看次数

如何使用WinForms进度条?

我想显示在外部库中执行的计算进度.

例如,如果我有一些计算方法,并且我想在我的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)

c# winforms progress-bar

92
推荐指数
2
解决办法
31万
查看次数

如何在XML属性中保存换行符?

我需要保存包含某些XML属性中的换行符的内容,而不是文本.应该选择该方法,以便我能够在XSLT 1.0/ESXLT/XSLT 2.0中对其进行解码

什么是最好的编码方法?

请建议/提出一些想法.

xml xslt newline

56
推荐指数
2
解决办法
8万
查看次数

从App.xaml.cs关闭WPF应用程序

我目前正在编写一个WPF应用程序,它在App.xaml.cs中执行命令行参数处理(这是必要的,因为Startup事件似乎是获取这些参数的推荐方法).根据我想要退出程序的参数,据我所知,应该在WPF中使用Application.Current.Shutdown()或者在这种情况下(因为我在当前的应用程序对象中)也可能只是this.Shutdown().

唯一的问题是这似乎不正常.在Shutdown()线路仍然被执行后,我已经逐步调试了调试器和代码,这导致了方法之后的错误,因为我预计应用程序不能存活那么长时间.此外,主窗口(在XAML中的StartupUri属性中声明)仍然被加载.

我已经检查了该方法的文档,但在评论中没有发现任何内容,告诉我不应该在使用期间Application.Startup或根本不使用它Application.

那么,那时退出程序的正确方法是什么,i.即 对象中的Startup事件处理程序Application

c# wpf application-shutdown

36
推荐指数
2
解决办法
3万
查看次数

将实体框架对象绑定到Datagridview C#

我一直在尝试将一个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)

c# data-binding entity-framework datagridview winforms

32
推荐指数
1
解决办法
6万
查看次数

是否有使用DDD(域驱动设计)的开源项目?

我正在努力理解DDD背后的概念,但我发现通过阅读书籍很难理解,因为他们倾向于以相当抽象的方式讨论这个主题.我希望在代码中看到一些优秀的DDD实现,最好是在C#中.

在开源世界中有没有很好的DDD项目实例?

c# architecture open-source domain-driven-design

26
推荐指数
3
解决办法
1万
查看次数

更改for循环中的迭代次数

我有这样的代码:

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)

怎么了?号码已经改变.

我的想法错在哪里?

python loops for-loop range

16
推荐指数
3
解决办法
2万
查看次数

右对齐Winforms中的DataGridView列标题

我在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)

我确信我正在做一些非常愚蠢的事情,但是,我无法做到这一点.

datagridview winforms

14
推荐指数
1
解决办法
4万
查看次数

FileUpload获取文件扩展名

我正在尝试上传文件并在下面更改其名称.我需要获取文件扩展名.下面的代码在"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# file-extension file-upload

14
推荐指数
2
解决办法
5万
查看次数