小编use*_*661的帖子

在编译时强制执行狭义的隐式强制

我正在尝试定义一个结构,该结构使用具有有限数字范围的变量,以及来自整数的隐式强制.如果任何常量或其他硬编码值与此结构一起使用,我希望能够强制构建错误.

这是我想要完成的一个例子.

    byte a = 123; // Allowed
    byte b = 123123; // Not allowed
    const int x = 123;
    const int y = 123123;
    byte c = x; // Allowed
    byte d = y; // Not allowed
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够将数字限制在1到99之间,以便MyStruct s = 50; 但是MyStruct s = 150; 导致编译时错误,如上面的字节b和d.

我发现了一种类似于不同语言的东西,但不是C#.

c# coercion compile-time

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

等待单元测试中的asyncrhonous事件引发事件

我正在尝试从单元测试中单独测试事件SmtpClient.SendCompleted的测试,并且我遇到了一个烦人的问题,测试在事件实际触发之前继续处理,终止应用程序而不实际进入事件.那么,想象下面的代码:

[TestClass]
public class emailTest
{
    public bool sentEmail = false;

    [TestMethod]
    public void sendEmail()
    {
        SmtpClient smtp = new SmtpClient("smtpserver");
        smtp.SendCompleted += delegate(Object sender, System.ComponentModel.AsyncCompletedEventArgs e) { sentEmail = true; };
        MailMessage mm = new MailMessage("from@address.com", "to@address.com", "test subject", "test body");
        smtp.SendAsync(mm, "test");
        Assert.IsTrue(sentEmail);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我手动插入这样的延迟,则此测试失败...

[TestClass]
public class emailTest
{
    public bool sentEmail = false;

    [TestMethod]
    public void sendEmail()
    {
        SmtpClient smtp = new SmtpClient("smtpserver");
        smtp.SendCompleted += delegate(Object sender, System.ComponentModel.AsyncCompletedEventArgs e) { sentEmail = true; };
        MailMessage …
Run Code Online (Sandbox Code Playgroud)

c# events unit-testing asynchronous

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

标签 统计

c# ×2

asynchronous ×1

coercion ×1

compile-time ×1

events ×1

unit-testing ×1