小编Ste*_*Kok的帖子

标有TestInitialize和TestCleanup的类未执行

我一直在努力争取这个,希望它会帮助别人.

虽然创建使用MSTEST单元测试我发现我在每个测试重复相同的码,并发现了几个方便的属性(的TestInitialize,TestCleanup,ClassInitialize,和ClassCleanup).

据推测,当您使用这些属性之一标记方法时,它应该自动执行(在每次测试之前,在每次测试之后,在所有测试之前,以及在所有测试之后).令人沮丧的是,这没有发生,我的测试失败了.如果从标有TestMethodattribute 的类中直接调用这些方法,则测试成功.显然他们不是自己执行的.

以下是我使用的一些示例代码:

[TestInitialize()]
private void Setup()
{
    _factory = new Factory();
    _factory.Start();
}
Run Code Online (Sandbox Code Playgroud)

那为什么不执行?

c# mstest vs-unit-testing-framework

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

在 DDD 中如何通过 DTO 传递值对象?

在我的域中,每个域实体可能有许多值对象。我创建了价值对象来表示金钱、重量、数量、长度、体积、百分比等。

这些值对象中的每一个都包含一个数值和一个度量单位。例如 money 包含货币价值和货币 ($, euro,...) , weight 包含数值和重量单位(kilo, pound, ...)

在用户界面中,这些也并排显示:字段名称、其值后跟其随附单元,通常在属性面板中。域实体具有向 UI 公开的等效 DTO。

我一直在寻找将 DTO 内的值对象传输到 UI 的最佳方法。

  1. 我是否只是将特定值对象公开为 DTO 的一部分?
  2. 我是否公开了在 DTO 中提供名称/值/单位的通用“值对象”等价物?
  3. 我是否在 DTO 中将其拆分为单独的名称/值/单位成员,以便在 UI 中重新组合它们?
  4. 我是否将它们作为 KeyValuePair 或 Tuple 传输到 DTO 中?
  5. 还有什么?

我已经进行了深入搜索,但似乎没有其他问题可以完全解决这个问题。非常感谢任何建议!

编辑:在 UI 中,值和单位都可以更改并发送回域进行更新。

c# domain-driven-design dto value-objects

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

获取属性会影响结构的大小吗?

我有一个结构可能比类更可取的情况:

  • 包含3个bools
  • 是不可改变的
  • 从来没有盒装

但是,我想添加一些只有get访问权限的属性,它们提供了上述3个bool的组合.例如,bools是"Same","Forward"和"Backward".属性将是"全部","无","单向","双向"等,这可以从前者3确定.

这些属性是否会增加堆栈上每个结构实例的大小,从而使类更合适?或者它不会影响选择?

c# size struct get properties

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

使用InternalsVisibleTo属性时的混淆?

我想InternalsVisibleTo仅使用该属性来进行有意义的单元测试.

但是,我担心当我构建发布时,internal成员不会被混淆,即使没有朋友程序集将成为发布版本的一部分.

有什么我可以/需要做的事情会导致这些internal成员真正被认为internal是发布版本吗?在网上找不到明确的答案.

仅供参考:我还没有选择特定的混淆器.这个问题的任何答案都可能影响这个选择.

c# obfuscation internalsvisibleto

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

EF Core - 唯一约束,包括迁移中未检测到的导航属性

我正在尝试应用唯一的复合约束,约束的一部分是外键。我似乎让它工作的唯一方法是在我的域类中显式定义外键,这是我想避免的。这可能吗?

该问题和解决方法适用于HasAlternateKeyHasIndex。该解决方案构建良好,但在创建迁移时会忽略约束,直到影子属性转换为域类中的真实属性。

这不起作用(迁移会忽略这一点):

entity.HasAlternateKey(e => new { e.Header.Id, e.Version, e.StartDate });
Run Code Online (Sandbox Code Playgroud)

将影子属性 HeaderID 转换为真实属性后,这确实有效:

entity.HasAlternateKey(e => new { e.HeaderId, e.Version, e.StartDate });
entity.HasOne(e => e.Header).WithMany().HasForeignKey(f => f.HeaderId);
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-migrations ef-core-2.2

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