小编Ste*_*ers的帖子

存储签名的道德规范

我正在创建一个软件,创建合同并通过gif捕获客户的签名并将其应用于合同(并吐出pdf).现在,我们正在存储合同中的数据,但是当谈到签名时,我不确定是否应该这样做.

存储:优点:如果pdf文档丢失,我可以立即轻松地为任何人(我们或客户)重建文档.(与律师核实,只要数据没有或已经改变,从数据重建文件是合法的和适用的)

缺点:虽然我永远不会对存储的签名做任何事情,但我无法确定,如果我离开公司,我的同事或替代者将尊重这一点.

不要存储它:优点:道德高地,现在或将来任何人都没有选择使用该图像并对其进行任何操作.它让每个人都诚实.

缺点:如果pdf丢失,现在无法重建原始文档 - 这是一个很好的可能性.

storage

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

无法加载类型'NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu'

我正在尝试通过" 你的第一个基于NHibernate的应用程序 "来获取其他类型的ORM(我习惯使用DevExpress'XPO)并且我知道tut使用的版本和最新的可用版本.

当我尝试运行can_add_new_product测试时,我得到了标题这个问题的错误.

  1. 我添加了对NHibernate.ByteCode.LinFu的引用(CopyLocal = true)
  2. 我将属性添加到我的hibernate.cfg.xml中(为了便于阅读,间隔为多行):

    NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu

我确保我在x86中运行构建.

我还能做些什么来解决这个问题?

nhibernate visual-studio-2008

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

测试在不发送邮件的情况下发送电子邮件的方法

我有一个方法

public abstract class Base
{
    public void MethodUnderTest();
}

public class ClassUnderTest : Base
{
    public override MethodUnderTest()
    {
        if(condition)
        {
            IMail mail = new Mail() { /* ... */ };
            IMailer mailer = new Mailer() { /* ... */ }

            mailer.Send(mail);
        }
        else
        {
            /* ... */
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这个方法的单元测试,邮件被发送到我自己,所以它并不可怕(比没有测试更好),但我不想发送邮件.

  • 我遇到的问题是我不希望类中的测试特定代码(即if(testMode)返回;而不是发送邮件)
  • 我不太了解DI,但我考虑将模拟IMailer传递给MethodUnderTest,除了它覆盖基类,并且没有其他派生自Base的类需要一个IMailer对象(我不想强迫Base的实现者)在MethodUnderTest中使用不必要的IMailer)

我还可以做些什么?

(注意:IMail和IMailer是发送电子邮件的外部库的一部分.它是内部编写的,所以我可以根据需要修改它,尽管在这种情况下我看不到需要)

c# unit-testing

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

将具体类型的泛型集合转换为基类型的集合

我有很多实现特定接口(ISearchable)的类,我想从静态方法返回基类型(ISearchable)的IEnumerable ,但是我不知道如何在没有中间的情况下转换它集合.

代码非常简单,域对象的实现之一就是这样:

public class account : ISearchable
{
    public static IEnumerable<ISearchable> Search(string keyword)
    {
        // ORMVendorCollection<T> implements IQueryable<T>
        ORMVendorCollection<account> results = /* linq query */

        // this works if I change the return type to IEnumerable<account>
        // but it uglifies client code a fair bit
        return results.AsEnumerable<account>();

        // this doesn't work, but it's what I'd like to achieve            
        return results.AsEnumerable<ISearchable>(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

客户端代码,理想情况如下:

public static IEnumerable<ISearchable> Search(string keyword)
{
    return account.Search(keyword)
        .Concat<ISearchable>(order.Search(keyword))
        .Concat<ISearchable>(otherDomainClass.Search(keyword));
}
Run Code Online (Sandbox Code Playgroud)

c# linq generics ienumerable

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

如何在更新时连接表

我有以下查询:

select      count(L.ID)
from        LA inner join L on (LA.leadid = L.ID)
where       L.status = 5
and         L.city = "cityname"
and         Date(LA.Datetime) < Date_Sub(Now(), INTERVAL 6 MONTH);
Run Code Online (Sandbox Code Playgroud)

查找特定城市中状态为5且年龄超过6个月(日期存储在洛杉矶)的记录.这将返回大约4k的结果.我想在每个记录上将状态值更新为1,因此我的更新如下所示:

update      L, LA
set         L.status = 1
where       L.status = 5 
and         L.city = "cityname" 
and         Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL 6 MONTH);
Run Code Online (Sandbox Code Playgroud)

但它会停止并锁定数据库.我怀疑有一个问题,因为没有加入,但我尝试类似的东西:

update      L, LA
from        L inner join LA on (L.OID = LA.leadid)
set         L.status = 1
where       L.status = 5 
and         L.syscity = "cityname" 
and         Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL …
Run Code Online (Sandbox Code Playgroud)

mysql sql join sql-update

2
推荐指数
1
解决办法
3916
查看次数

检查通用类是否从接口继承

我有一个继承自接口的类.该接口定义了我想在调用代码中订阅的事件.我尝试了几件事,但他们都决定做错(我知道这是真的).如何检查类是否实现特定接口.

这是我尝试过的(注意,有问题的对象是一个实现MyInterface的usercontrol,存储在一个控件数组中,其中只有一些实现MyInterface - 它不是null):

if (this.controls[index].GetType().IsSubclassOf(typeof(MyInterface)))
    ((MyInterface)this.controls[index]).Event += this.Handler;
Run Code Online (Sandbox Code Playgroud)
if (this.controls[index].GetType().IsAssignableFrom(typeof(MyInterface)))
    ((MyInterface)this.controls[index]).Event += this.Handler;
Run Code Online (Sandbox Code Playgroud)
if (this.controls[index].GetType() == typeof(MyInterface))
    ((MyInterface)this.controls[index]).Event += this.Handler;
Run Code Online (Sandbox Code Playgroud)

一切都无济于事.

c# inheritance interface

2
推荐指数
1
解决办法
191
查看次数

使用entlib进行单元测试 - 不包括捕获量

我有一个方法可以做一些IO,通常看起来像这样:

public bool Foo()
{
    try
    {
        // bar

        return true;
    }
    catch (FileNotFoundException)
    {
        // recover and complete
    }
    catch (OtherRecoverableException)
    {
        // recover and complete
    }
    catch (NonRecoverableException ex)
    {
        ExceptionPolicy.HandleException(ex, "LogException");
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法不是完成任务的关键,有外部恢复步骤 - 并且抛出NonRecoverableException是相对常见的 - 它在规范中返回false,报告'此时无法完成'并且处理移动.NonRecoverableException不会将程序置于无效状态.

当我进行单元测试时,抛出其中一个异常,我得到了错误

Activation error occured while trying to get instance of type ExceptionPolicyImpl
Run Code Online (Sandbox Code Playgroud)

而且我想压制它,而不是获取实际/原始异常信息,而不是EntLib无法记录(并且,实际上强制NonRecoverableException并且具有[ExpectedException(typeof(NonRecoverableException))]单元测试以确保这种方法符合规范.

我怎么能这样做?

编辑 使用预处理程序指令并不理想,因为我讨厌在代码库中看到特定于测试的代码.

c# enterprise-library exception-handling

2
推荐指数
1
解决办法
528
查看次数

MySQL:获取其他字段中最大值低于某个阈值的记录

我在MySQL中有2个表,称他们为账号并注意:

Account
- Id
- Available (bool)

Note
- Id
- When (DateTime)
- AccountId (FKey)
Run Code Online (Sandbox Code Playgroud)

我想更新最近记录低于某个阈值的帐户(比如90天前).在SQL中,我喜欢以下内容(由于max工作方式,显然不起作用)

UPDATE 
    Account INNER JOIN Note ON Account.Id = Note.AccountId
SET
    Account.Available = true
WHERE
    Max(Note.When) < DATE_ADD(NOW(), INTERVAL -90 DAY);
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的方法?

mysql sql sql-update

2
推荐指数
1
解决办法
204
查看次数

查找通用列表中项目索引的简单方法

我正在尝试获取字符串列表中的下一项(邮政编码).通常情况下,我只是预先找到它,然后在列表中找到下一个,但我试图比那更直观和紧凑(更多的是一项运动而不是任何东西).

我可以用lambda轻松找到它:

List<string> postalCodes = new List<string> { "A1B", "A2B", "A3B" };
currentPostalCode = "A2B";
postalCodes.Find((s) => s == currentPostalCode);
Run Code Online (Sandbox Code Playgroud)

哪个很酷,所有,我正确得到"A2B",但我更喜欢索引而不是值.

c# generics lambda

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

读取UTF8编码文件时的大小差异

我正在尝试读取UTF8编码文件(.torrent).在文件中有一个"件"部分.紧接着是包含一系列SHA1哈希值的文本的长度.该文件报告要读取的长度(例如130100),但在阅读时我最终通过了EOF.

我不确定为什么会这样.这些文件很好(我已经使用现有的torrent客户端对它们进行了测试,并且我尝试了一些具有一致结果的文件)并且我正在阅读它们:

string contents = string.Empty;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)
{
    using (StreamReader reader = new StreamReader(fs, Encoding.UTF8))
    {
        contents = reader.ReadToEnd();
    }
}

parse(contents);
Run Code Online (Sandbox Code Playgroud)

但是,这显然不起作用.我是否错误地读取文件,或者在尝试解析文件之前将其存储在字符串中?当它读取正常范围的可读字符串之外的字符时似乎只是错误.

c# encoding utf-8

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

你将如何测试过滤复杂对象的东西

我有一个具有7个相关字段的持久对象.

这些字段可以包含此处列出的值的数量:

Field    # of Possible Values
1        5
2        20
3        2
4        2
5        19
6        2
7        8
Run Code Online (Sandbox Code Playgroud)

这是121600个独特对象的潜力.

测试中的代码是一些过滤器,它们根据字段的值捕获一定数量的这些对象,然后将它们放入一个bin以供另一个系统使用.bin存放是微不足道的,经过测试,并且工作正常...只是过滤不起作用.似乎有许多边缘情况没有被覆盖,并且许多对象在根本不应被选择时被放置在容器中,反之亦然.

总而言之,有9个过滤器在一系列责任中运行,每个过滤器将物体放入箱子直到箱子装满,此时链条退出.链中的最后一个过滤器只是一个"过滤器",它向管理员发送一封电子邮件,指出对象运行不足(即,如果链到达此过滤器,则bin未满,并且需要看看).

所以我的问题是:我如何测试这些过滤器?我可以使用一系列for语句创建每个唯一类型的对象之一:

public void FixtureSetup()
{
    for(each possible value for field 1)
    {
        for(each possible value for field 2)
        {
            // ... continue with 5 more for statements

            // Create Object with each value
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是尝试手动确定哪些对象应该从生成的集合(甚至是过滤对象的集合)中正确过滤将是非常困难的(如果可能的话,我会在我第一次编写过滤器时轻松完成它).

我知道要求是错误的,因为他们说的是:

filter 1 gets
    - field 1: values 1/2/3
    - field 2: values 2/3/4
    - etc.
Run Code Online (Sandbox Code Playgroud)

但结果显示了很多边缘情况,每次我改变它以包括那个特定情况,其他东西中断(我没有回归测试以确保它没有)并且很难找到链中的位置特定问题发生了.

编辑>我试图单独测试过滤器,但假设如下:

过滤器1抓取121600个可能对象中的500个(根据过滤器的标准).我发现,对100个(完全猜测)那些被抓住的物体,不应该 …

c# unit-testing chain-of-responsibility

0
推荐指数
1
解决办法
247
查看次数

是否有微软使用.NET制作的软件?

我最近一直在阅读一些博客和文章,有一件事我注意到有几件事是作者声称微软"不使用他们自己的技术"来开发使用.NET框架的应用程序(特别是桌面应用程序).

关于他们的产品开发的平台,我看不到很多信息.我听说Media Center有一些.NET代码,但不是100%,与SQL Server Management Studio一样.

所以我问的问题是,有没有人知道微软制造的100%.NET代码的软件?

编辑我知道有很多应用程序拥有大量遗留代码,并且用.NET重写这些应用程序将是荒谬的.为此,我不是问在新框架中重写应用程序是不是一个好主意,所以让我们不要偏离主题.

自.NET发布以来,已有8多年的MS编写了大量新软件.我想知道它们中的任何一个是否完全使用.NET编写.

.net

0
推荐指数
2
解决办法
1142
查看次数