Dependency injection 遗留代码&;依赖注入-在让两者通信时是否有任何折衷?

Dependency injection 遗留代码&;依赖注入-在让两者通信时是否有任何折衷?,dependency-injection,ninject,legacy-code,Dependency Injection,Ninject,Legacy Code,我正在处理一个由大量遗留代码组成的项目。对于legacy,我主要指的是包含应用程序所有业务逻辑的大型类库。此业务逻辑由相互关联的类组成。对于互连,我的意思是类的实例直接在其他类中创建(new) 此应用程序的较新部分在不同的类库中使用依赖项注入。不幸的是,这些类库需要访问遗留代码,因此: 这些新类库和旧的遗留类库之间存在依赖关系 旧类的一些实例是在新类中创建的(new) 一切都是完美的,因为没有旧代码需要访问新代码的地方。直到现在。让我解释一下: 旧代码中的类可以执行某些类型的计算 新代码中

我正在处理一个由大量遗留代码组成的项目。对于legacy,我主要指的是包含应用程序所有业务逻辑的大型类库。此业务逻辑由相互关联的类组成。对于互连,我的意思是类的实例直接在其他类中创建(
new

此应用程序的较新部分在不同的类库中使用依赖项注入。不幸的是,这些类库需要访问遗留代码,因此:

  • 这些新类库和旧的遗留类库之间存在依赖关系
  • 旧类的一些实例是在新类中创建的(
    new
一切都是完美的,因为没有旧代码需要访问新代码的地方。直到现在。让我解释一下:

  • 旧代码中的类可以执行某些类型的计算
  • 新代码中的类可以进行其他类型的计算
我现在需要在一个旧的遗留类中将这些计算相加

显然,通过访问旧的计算类来实现这一点没有问题。当我需要获取新的计算类时,问题就出现了,因为我无法直接实例化它们(因为它们需要一些不同的参数,由DI容器注入)。为了让一切正常工作,我需要让DI容器将这些新类注入到旧遗留代码的构造函数中,但我想你们都明白了一点:所有东西都需要重写几乎整个代码库,因为它充满了依赖性

我知道这在DI中是很正常的,但我试图弄清楚是否有任何(肮脏的)方法可以做到这一点,或者这是不可行的


作为DI容器,我正在使用Ninject,我也尝试了属性注入,但它不起作用。我猜是因为,如果包含该属性的类由DI容器实例化,则该属性将被注入。

如果您可以使用重新格式化问题,这样我们就可以更清楚地了解当前问题,这将是非常棒的。目前的解释给解释留下了太多的空白。一个简单的代码示例会有所帮助。您能够修改旧代码库吗?