【发布时间】:2018-03-15 16:01:16
【问题描述】:
当您使用 IoC 框架时,您最终会专门为 IoC 而创建接口。我很想为这些使用命名约定。
例如,在图片上没有 IoC 的情况下,您可能有以下业务领域驱动的结构:
interface IBodyPart
{
string ScientificName { get; set; }
string StreetName { get; set; }
}
class Head : IBodyPart
{
public string ScientificName { get; set; }
public string StreetName { get; set; }
}
class BodyPartPoker
{
bool isSituationAcademic;
BodyPartPoker(bool isSituationAcademic)
{
this.isSituationAcademic = isSituationAcademic;
}
void Poke(IBodyPart bodyPart)
{
if (this.isSituationAcademic)
Debug.Print($"Proceeding to poke {bodyPart.ScientificName}");
else
Debug.Print($"Poking that {bodyPart.StreetName} LOL");
}
}
现在假设您想使用 IoC 注入 BodyPartPoker 实例。您还想使用某种单元测试模拟框架来测试该逻辑。
在这种情况下,即使你没有业务领域的案例,你也会引入IBodyPartPoker接口:
interface IBodyPartPoker
{
bool IsSituationAcademic { get; set; }
void Poke(IBodyPart bodyPart);
}
class BodyPartPoker : IBodyPartPoker
{
我的问题是:为IBodyPartPoker 之类的接口制定命名约定是否有意义,因此我们明确确定它的目的是不与业务域相关?
说....
interface IIocBodyPartPoker
【问题讨论】:
-
我会说这样做没有多大意义。
标签: c# unit-testing oop mocking inversion-of-control