小编Dav*_*son的帖子

为什么Assert.AreEqual(T obj1,Tobj2)使用相同的字节数组失败

我在以下代码段中有两个相同的字节数组:

    /// <summary>
    ///A test for Bytes
    ///</summary>
    [TestMethod()]
    public void BytesTest() {
        byte[] bytes = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketData);
        TransferEventArgs target = new TransferEventArgs(bytes);

        byte[] expected = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketValue);
        byte[] actual;
        actual = target.Bytes;

        Assert.AreEqual(expected, actual);
    }
Run Code Online (Sandbox Code Playgroud)

两个数组都是相同的字节.在这种情况下,为什么Assert.AreEqual会失败?

c# unit-testing assert

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

C#'ref'关键字,性能

如果你有一个Bitmap对象需要传递给众多方法(大约10个),最后到一个事件,它将在它被使用后最终被处理掉,是否(性能明智)将它传递给每一个那些方法通过引用而不是值?

按值传递,对象被复制,而不是通过引用传递.

(在这种情况下,性能至关重要.应用程序需要尽可能快地运行.)

c# performance ref

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

如何从WinRT/Windows应用商店应用程序发送电子邮件?

我正在开发Windows应用商店应用程序(Windows 8).

我需要根据存储在应用程序数据中的数据和地址发送电子邮件,而无需用户输入数据或地址.

实现它的正确/简单方法是什么?

EitanB

c# windows-8 windows-runtime winrt-xaml winrt-async

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

您是否可以在单元测试项目中使用Visual Studio数据库项目来为功能测试设置空数据库?

多年来,我们使用以下代码在基类中为我们的DAL进行功能测试设置数据库,这对我们来说非常有效.

/// <summary>
/// Initializes the test class by creating the integration database.
/// </summary>
[TestInitialize]
public virtual void TestInitialize()
{
    DataContext = new DataContext(ConnectionString);

    CleanupPreviousTestRunDatabases();

    if (DataContext.Database.Exists())
    {
        DataContext.Database.Delete();
    }

    DataContext.Database.Create();
    DataContext.Database.ExecuteSqlCommand(String.Format(Strings.CreateLoginCommand, DatabaseUserName, DatabasePassword));
    DataContext.Database.ExecuteSqlCommand(String.Format("CREATE USER {0} FOR LOGIN {0}", DatabaseUserName));
    DataContext.Database.ExecuteSqlCommand(String.Format("EXEC sp_addrolemember 'db_owner', '{0}'", DatabaseUserName));
}
Run Code Online (Sandbox Code Playgroud)

但是,使用Entity Framework不会设置数据库的所有组件,我们希望捕获EF DAL模型与实际数据库之间的差异.

我们使用SSDT工具/ Visual Studio数据库项目来完成所有数据库工作,我知道你可以编写SQL单元测试,在那些SQL单元测试中,我已经看到了基于数据库项目设置和创建数据库的能力本身.这是我想要做的,但是来自我们的其他功能测试库.

我可以引用这些库并编写一些设置代码,但我正在寻找的是:

a)如何提供用于部署的数据库项目?

b)如何在代码而不是app.config中指定连接字符串,例如使用localdb而不是动态命名的数据库?

namespace Product.Data.Tests
{
    using Microsoft.Data.Tools.Schema.Sql.UnitTesting;
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class FunctionalTest
    {
        [TestInitialize]
        public virtual void TestInitialize()
        {
            SqlDatabaseTestClass.TestService.DeployDatabaseProject();
            SqlDatabaseTestClass.TestService.GenerateData();
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing entity-framework visual-studio sql-server-data-tools

12
推荐指数
2
解决办法
2871
查看次数

使用DTO和POCO对象时,处理导航属性的最佳做法是什么?

我正试图围绕领域驱动开发.我想确保我有一个良好的基础和理解它,所以如果在这里避免使用AutoMapper或类似的建议会很好.我的架构目前涉及以下内容:

在此输入图像描述

  • WCF服务负责持久性(使用实体框架)和服务器端验证.它将POCO转换为DTO,并将DTO转移到客户端.

  • 客户接收DTO并将其转换为POCO.转换POCO和DTO的类在服务和客户端之间共享.

  • POCO的实现IValidatableObjectINotifyPropertyChanged服务器和客户端都使用它们,但它们不用于数据传输.DTO是,只是不包含任何行为的财产袋.

(1)问题#1.此架构是否适用于域驱动设计.
(2)问题#2.POCO是否适合包含导航属性?对于POCO来说,在DDD架构中包含导航属性对我来说真的是错误的,因为对我来说,拥有可能序列化或不序列化的导航属性是没有意义的.拥有专门的DTO对我来说更有意义.

例如,这是POCO/DTO在我的架构中的样子.

// Enforces consistency between a POCO and DTO
public interface IExample
{
    Int32 Id { get; set; }
    String Name { get; set; }
}

// POCO
public class Example : IExample, INotifyPropertyChanged, IValidatableObject
{
    private int id;
    private string name;

    public Int32 Id {
        get { return this.id; }
        set {
            this.id = value;
            OnPropertyChanged("Id");
        }
    }

    public String Name {
        get { return …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework poco dto

10
推荐指数
2
解决办法
3318
查看次数

获得两个值之间的时差

在我的应用程序中,我有4个TextBoxes,2个TextBox用于输入开始时间,2个TextBox用于输入结束时间.

用户将始终输入完成的时间,因此输入将始终为11:30,12:45,依此类推.

如何在开始和结束时间之间获得小时和分钟的差异?

.net c# datetime

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

类型的命名约定更短

我正在开发一个框架,一些对象有很长的名字.我不是很喜欢这个,但我也不喜欢缩略词.我试图为"EventModelSocket"提供一个较短的名称,基本上是实现各种事件的.Net套接字类的包装器,以及发送文件,对象等的方法.由于这个,一些对象的名称很长例如,"EventModelSocketObjectReceivedEventArgs".

我已经尝试过从词库到字典的所有内容,坐在这里思考数小时.

当你遇到这样的情况时,命名的最佳方法是什么?

c# naming-conventions

8
推荐指数
3
解决办法
492
查看次数

不安全的每像素访问,30毫秒访问1756000像素

所以我一直在我的网站上分享关于上述主题标题的一些想法,关于快速,不安全的像素访问.一位先生给了我一个粗略的例子,说明他是如何用C++做的,但这对C#没有帮助,除非我可以互操作,而且互操作也很快.我在互联网上找到了一个使用MSDN帮助编写的课程,以便不安全地访问像素.这门课速度非常快,但速度不够快.这是班级:

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;

namespace DCOMProductions.Desktop.ScreenViewer {
public unsafe class UnsafeBitmap {
    Bitmap bitmap;

    // three elements used for MakeGreyUnsafe
    int width;
    BitmapData bitmapData = null;
    Byte* pBase = null;

    public UnsafeBitmap(Bitmap bitmap) {
        this.bitmap = new Bitmap(bitmap);
    }

    public UnsafeBitmap(int width, int height) {
        this.bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
    }

    public void Dispose() {
        bitmap.Dispose();
    }

    public Bitmap Bitmap {
        get {
            return (bitmap);
        }
    }

    private Point PixelSize {
        get …
Run Code Online (Sandbox Code Playgroud)

c# performance gdi+

7
推荐指数
1
解决办法
6941
查看次数

为什么ToolboxBitmapAttribute不起作用?

我的项目中有一个名为'UIWizard.cs'的UserControl,以及一个名为'UIWizardToolboxBitmap.bmp'的24位Bitmap,它的构建操作设置为'Embedded Resource'.我确认它确实存在于清单中:

.mresource public BitFlex.Windows.Forms.Resources.UIWizardToolboxBitmap.bmp
{
    // Offset: 0x00000000 Length: 0x00000336
}
Run Code Online (Sandbox Code Playgroud)

我试过这些属性声明:

[ToolboxBitmap(typeof(UIWizard), "BitFlex.Windows.Forms.Resources.UIWizardToolboxBitmap.bmp")]
public partial class UIWizard : UserControl {

[ToolboxBitmap(typeof(UIWizard), "UIWizardToolboxBitmap.bmp")]
public partial class UIWizard : UserControl {

[ToolboxBitmap(typeof(UIWizard), "UIWizardToolboxBitmap")]
public partial class UIWizard : UserControl {
Run Code Online (Sandbox Code Playgroud)

当我将我的库设置为'Release Build'并在另一个项目中引用它并使用Choose Items手动添加ToolBox项时...它仍然无法正确显示我的位图.我想避免使用绝对路径,因为这是一个源控制项目,并不是每个人都会使用相同的映射.

由于缺乏关于ToolBoxBitmapAttribute的文档,MSDN确实没有多大帮助,并且Web上的大多数内容都非常模糊.

c# toolbox embedded-resource

7
推荐指数
1
解决办法
3107
查看次数

您是否应该对共享相同私有实现的单独方法进行重复单元测试?

我正在为我们的大型企业应用程序构建业务层,目前我们正在进行500个单元测试.该方案是我们有两个public方法,public AddT(T)以及public UpdateT(T)双方作出的内部通话private AddOrUpdateT(T),因为有很多的核心逻辑是在两者之间是相同的,但不是全部; 它们是不同的.

因为它们是独立的公共API(不管私有实现),我为每个API编写了单元测试,即使它们是相同的.这可能看起来像

[TestMethod]
public void AddT_HasBehaviorA() 
{
}

[TestMethod]
public void UpdateT_HasBehaviorA() 
{ 
}
Run Code Online (Sandbox Code Playgroud)

目前这个特定的业务对象大约有30个单元测试添加和用于更新40次单元测试,其中更新测试的30一样的附加测试.

这是正常的,还是我应该将常见行为抽象为单独测试的公共帮助器类,而这两个API只是使用该辅助类而不是具有实现的私有方法?

什么被认为是这些情况的最佳做法?

.net c# tdd unit-testing

7
推荐指数
1
解决办法
530
查看次数