我们有一个庞大的解决方案(>100个项目),几乎每种类型都使用服务定位器(示例1)或我们自己的类型字典(示例2)进行实例化。
例如,我们有:
或者
第二个例子会在配置文件中查找具体实例化对象的信息,并使用反射。在跟踪代码时,它使事情变得更加困难 - 因为不清楚使用的是哪种具体类型,所以我们必须多次检查映射,才能学习代码的某个部分。以上面的例子为例,按下F12键:
实现起来也有点困难 - 我们需要一个接口+具体类+配置映射,而另一种选择只需要一个类。
想想看 - 我并不知道是否曾经有任何东西被“替换”为另一种类型 - 所以尽管我们已经实现了IoC,但我们几乎没有使用它,或者至少很少使用。
所以 - 它真的值得吗?我们实现得不正确/太多了吗?还是我误解了什么?
例如,我们有:
IQuote quote = Registry.Resolve<IQuote>();
或者
IQuote quote = Registry.Find<IQuote>(args);
第二个例子会在配置文件中查找具体实例化对象的信息,并使用反射。在跟踪代码时,它使事情变得更加困难 - 因为不清楚使用的是哪种具体类型,所以我们必须多次检查映射,才能学习代码的某个部分。以上面的例子为例,按下F12键:
quote.DoSomething()
会将您带到接口定义。实现起来也有点困难 - 我们需要一个接口+具体类+配置映射,而另一种选择只需要一个类。
想想看 - 我并不知道是否曾经有任何东西被“替换”为另一种类型 - 所以尽管我们已经实现了IoC,但我们几乎没有使用它,或者至少很少使用。
所以 - 它真的值得吗?我们实现得不正确/太多了吗?还是我误解了什么?