1
5
很简单,您不需要框架。只是为您的
字符串是您的依赖项。因为它不是一个复杂的类型,所以您的依赖注入就在那里。 DI不是火箭科学,尽管有些人可能希望你相信这一点。 |
2
9
从技术上讲,wim hollebrandse已经回答了你的问题,但我只是想指出,我个人会用另一种方式来做,因为我不喜欢每次实例化类时都传递连接字符串。我知道您有一个默认的构造函数,但是我认为我们仍然可以使它更清晰一些。 首先,我将创建一个静态类来获取您的连接,如下所示:
然后,我会这样使用它:
使用这种方法,如果默认连接字符串发生更改,您只需要更改一行代码,而不需要转到配置文件中引用连接字符串的每一行。但是,如果需要,它可以为您提供覆盖连接字符串的能力。 希望有帮助… |
3
5
问自己的第一个问题是什么是地理数据?换句话说,班级的责任是什么? 它似乎是 Domain Layer ,因此可能包含业务逻辑。它可以被( coupled 其他类别。 如果是这样,依赖关系是什么?确定这一点的一种方法是尝试写入 unit tests 单独测试地理数据。如果测试需要重要的设置,则被测试的类要么与其他类紧密耦合,要么具有多个职责(低 cohesion )。 假设我们更改类,以便构造函数接受一个连接字符串参数。我们如何测试public getcountries方法?首先,我们用已知的测试数据建立一个数据库… 这既耗时又脆弱(如果有人更新数据怎么办?),测试运行相对缓慢(必须连接到数据库)。 好吧,我们可以将实现IDBConnection的对象传递给构造函数(构造函数注入)。注意,依赖注入通常涉及传入接口或抽象类。要测试它,我们必须创建一个假的idbConnection。我们可以使用 isolation (mocking) framework . 但当调用createCommand时,我们需要它来创建一个假的idbcommand… 引用Jeremy Miller(作者 StructureMap )“这是太多的努力,收获太少。”见他的文章。 Best and Worst Practices for Mock Objects . 一种可能是使用 Repository Pattern . 您将把一个接口传递给特定的存储库,再传递给geodata构造函数。这将很容易伪造(手动或与模拟库)测试。具体的存储库将处理所有的数据访问。它可以与 ORM 进一步抽象数据访问的框架。连接字符串管理可以通过ORM或存储库(最好是在另一个依赖项或基类中)来完成。 如果这听起来很复杂,那是因为它很复杂。您选择了一个最困难的依赖注入案例(不幸的是,这也是最常见的案例之一)。 依赖注入本身是一个相当简单的概念。如果您的类正在调用Web服务,那么您可以将Web服务代码放在一个单独的类中,该类不做任何其他操作,实现一个接口,并将该接口传递给原始类。如果您有很多类和/或依赖项,那么DI/IOC容器框架可以使这变得更容易,但是它们不是一个需求。 编辑: 只是要明确一点,依赖注入是 不 复杂的部分。分离数据访问是。 |
4
1
我将创建一个工厂来创建
工厂有责任使用全局上下文来确定要注入到
|
6
0
我要做的是创建一个包含连接字符串选择逻辑的新类,然后使用该类获取地理数据实例的连接字符串:
然后,可以将其注入包含do方法的类中,以设置如下地理数据实例:
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |